随笔分类 - SQL
摘要:关于mysql事务行锁for update实现写锁的功能 读后感:用切面编程的理论来讲,数据库的锁对于业务来说是透明的。spring的事务管理代码,业务逻辑代码,表锁,应该是三个不同的设计层面。 在电子商务里,经常会出现库存数量少,购买的人又特别多,大并发情况下如何确保商品数量不会被多次购买. 其实
阅读全文
摘要:1 bytes = 8 bit ,一个字节最多可以代表的数据长度是2的8次方即 128到127,无符号从 0 到 255 的整型数据。 TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默认为4 很小的整数,存储大小为 1 字节。带符号的范围是 2^7 ( 128
阅读全文
摘要:当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的
阅读全文
摘要:认证概念: 服务器需要通过某种方式来了解用户的身份,一旦服务器知道了用户的身份,就可以判定用户可以访问事务和资源了;通常通过用户名和密码; HTTP响应/认证框架 HTTP认证模型: 质询/响应认证框架 HTTP的两个官方的认证协议:基本认证和摘要认证 认证的四个步骤: 请求: 客户端发起一条请求;
阅读全文
摘要:因为之前用过oracle,知道利用select for update 可以锁表。所以很自然就想到在mysql中能不能适应for update来锁表呢。 学习参考如下 由于InnoDB预设是Row Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁
阅读全文
摘要: 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制
阅读全文
摘要:Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 借助for update子句,我们可以在应用程序的层面手工实
阅读全文
摘要:近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据。 我们Mysql的存储引擎是innodb,支持行锁。解决同时拿数据的方法有很多,为了更加简单,不增加其他表和服
阅读全文
摘要:——————————— Oracle —————————————————– Oracle 的for update行锁 键字: oracle 的for update行锁 SELECT…FOR UPDATE 语句的语法如下: SELECT … FOR UPDATE [OF column_list][WA
阅读全文
摘要:php mysql lock tables 使用有感 mysql 的 表锁 lock tables 感觉就像一个 封闭的空间 mysql发现 lock tables 命令的时候,会将带有锁标记的表(table) 带入封闭空间,直到 出现 unlock tables 命令 或 线程结束, 才关闭封闭空
阅读全文
摘要:mysql在执行sql的时候会在日志当中记录很多信息,当然包括执行的所有语句。下面以使用navicat for mysql为例,来展示一下如何打开/查看MySQL的SQL记录:打开navicat for mysql,并连接到数据库,选择一个要操作的数据库。点击左上角的【工具】,选择历史日志选项,或者
阅读全文
摘要:程式 Debug 有時後從前面第一行追起來很辛苦(程式碼太多或 compile 過), 另一種做法就是從後面追起來, 反正最後寫入的是 DB, 那就從 DB 開始往前推, 所以就是要抓程式是執行哪些 SQL 語法.(以下只以 MySQL 為主) 之前用過的追蹤法是用 tcpdump 或 wiresh
阅读全文
摘要:最近给客户开发了基于Asp.Net mvc5 +Mysql+EF的项目,但是在EF里无法看到Mysql执行的语句之前也找到一些监控Mysql的软件但一直没有用起来,现在又遇到了问题即在EF里Mysal的查询没有结果而在Mysql里没有问题因为不知道EF生成的Mysql语句所以不知道是不是Sql的问题
阅读全文
摘要:http://qq85609655.iteye.com/blog/2113960 1)我们先通过status命令查看Mysql运行状态 mysql> status; mysql Ver 14.14 Distrib 5.1.73, for redhat linux gnu (x86
阅读全文
摘要:processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。1. 进入mysql/bin目录下输入mysqladmin processlist;2. &n
阅读全文
摘要:案例描述在定时脚本运行过程中,发现当备份表格的sql语句与删除该表部分数据的sql语句同时运行时,mysql会检测出死锁,并打印出日志。两个sql语句如下:(1)insert into backup_table select from source_table(2)DELETE FROM sourc
阅读全文
摘要:MySQL有以下几种日志: 错误日志: log err 查询日志: log 慢查询日志: log slow queries 更新日志: log update 二进制日志: log bin 默认情况下,所有日志创建于mysqld数据目录中。通过刷新日志,你可以强制 mysqld来关闭和重新打开日志文件
阅读全文
摘要:注:以下内容为根据《高性能mysql第三版》和《mysql技术内幕innodb存储引擎》的innodb status部分的个人理解,如果有错误,还望指正!! innodb存储引擎在show engine innodb status(老版本对应的是show innodb status)输出中,显示除了
阅读全文
摘要:1 死锁问题背景 1 1.1 一个不可思议的死锁 1 1.1.1 初步
阅读全文
摘要: 1 背景 1 1.1 MVCC:Snapshot Read vs Current Read 2 1.2
阅读全文