MySQL表级锁,行级锁,页级锁 哪位大哥简单明了地讲解一下 MySQL表级锁,行级锁,页级锁要求:用自己的比较形象 简明的理解。拒绝:百度或谷歌搜索后的复制贴。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 页级:引擎 BDB。表级:引擎 MyISAM。行级:引擎 INNODB。表级:理解为锁住整个表,可以同时读,写不行行级:单独的一行记录加锁 MySQL 5.1支持对MyISAM和MEMORY表进行表级锁定,对BDB表进行页级锁定,对InnoDB表进行行级锁定。对WRITE,MySQL使用的表锁定方法原理如下:如果在表上没有锁,在它上面放一个写锁。 否则,把锁定请求放在写锁定队列中。 对READ,MySQL使用的锁定方法原理如下:如果在表上没有写锁定,把一个读锁定放在它上面。 否则,把锁请求放在读锁定队列中。 InnoDB使用行锁定,BDB使用页锁定。对于这两种存储引擎,都可能存在死锁。这是因为,在SQL语句处理期间,InnoDB自动获得行锁定和BDB获得页锁定,而不是在事务启动时获得。行级锁定的优点:· 当在许多线程中访问不同的行时只存在少量锁定冲突。· 回滚时只有少量的更改。· 可以长时间锁定单一的行。行级锁定的缺点:· 比页级或表级锁定占用更多的内存。· 当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。· 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。· 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。在以下情况下,表锁定优先于页级或行级锁定:· 表的大部分语句用于读取。· 对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:· UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;· DELETE FROM tbl_name WHERE unique_key_col=key_value;· SELECT 结合并行的INSERT语句,并且只有很少的UPDATE或DELETE语句。· 在整个表上有许多扫描或GROUP BY操作,没有任何写操作。 ACMAIN_CHM 解释的很全面啊 佩服 SQL功底可见一斑。至少200年的内力。 锁的范围:表,行,页大小关系:表>行,页可以包含表、行,也有可能一行跨几个页(比较少见)选择原则:根据实际应用以及性能要求(和表记录的多少,大小,sql操作,以及锁的开销都有关系) mysql 字符编码问题 my.ini文件设置日志文件后读文件出错 MYSQL如何禁用某个触发器 mysql命令行中的问题 mysql里如何读入一个.sql文件的内容来执行查询? SOL排序 mysql 创建表出错 mysql5.6.x更新包求助 MySQL中update如何判断需要更新的值是否大于当前表中的最大值,如果大于才进行update mysql 5.7.21 for suse 12 SP1安装问题(华为云主机) 菜鸟求救 字段名可用"time"么? 不会和mysql内置函数冲突之类的吧 MySql的UNION ALL相同条件的问题?
表级:引擎 MyISAM。
行级:引擎 INNODB。表级:理解为锁住整个表,可以同时读,写不行
行级:单独的一行记录加锁
否则,把锁定请求放在写锁定队列中。
对READ,MySQL使用的锁定方法原理如下:如果在表上没有写锁定,把一个读锁定放在它上面。
否则,把锁请求放在读锁定队列中。
InnoDB使用行锁定,BDB使用页锁定。对于这两种存储引擎,都可能存在死锁。这是因为,在SQL语句处理期间,InnoDB自动获得行锁定和BDB获得页锁定,而不是在事务启动时获得。行级锁定的优点:· 当在许多线程中访问不同的行时只存在少量锁定冲突。· 回滚时只有少量的更改。· 可以长时间锁定单一的行。行级锁定的缺点:· 比页级或表级锁定占用更多的内存。· 当在表的大部分中使用时,比页级或表级锁定速度慢,因为你必须获取更多的锁。· 如果你在大部分数据上经常进行GROUP BY操作或者必须经常扫描整个表,比其它锁定明显慢很多。· 用高级别锁定,通过支持不同的类型锁定,你也可以很容易地调节应用程序,因为其锁成本小于行级锁定。在以下情况下,表锁定优先于页级或行级锁定:· 表的大部分语句用于读取。· 对严格的关键字进行读取和更新,你可以更新或删除可以用单一的读取的关键字来提取的一行:· UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
· DELETE FROM tbl_name WHERE unique_key_col=key_value;
· SELECT 结合并行的INSERT语句,并且只有很少的UPDATE或DELETE语句。· 在整个表上有许多扫描或GROUP BY操作,没有任何写操作。
SQL功底可见一斑。至少200年的内力。
大小关系:表>行,页可以包含表、行,也有可能一行跨几个页(比较少见)
选择原则:根据实际应用以及性能要求(和表记录的多少,大小,sql操作,以及锁的开销都有关系)