
MySQL优化
文章平均质量分 86
柒间
这个作者很懒,什么都没留下…
展开
-
深入理解Mysql事务隔离级别与锁机制
MyISAM在执行查询语句SELECT前,会自动给涉及的所有表加读锁,在执行update、insert、delete操作会自动给涉及的表加写锁。InnoDB在执行查询语句SELECT时(非串行隔离级别),不会加锁。但是update、insert、delete操作会加行锁。简而言之,就是。原创 2024-02-28 22:29:56 · 1698 阅读 · 0 评论 -
MySQL阻塞与死锁
因为不同锁之间的兼容性关系,在有些时刻一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源,这就是阻塞。查询:设置值:注意:参数参数是动态的,在mysql运行时可进行调整,参数是静态的,不可在运行时进行修改,否则会报错。(其实InnoDB存储引擎在大部分情况下都不会对异常进行回滚。异常实例演示:左边为会话A,右边为会话B。初始状态数据库表film中有3条数据,ID,分别为3,5,6;首先会话A 开启了事务A,并且在Next-Key Lock算法下锁定了小与5包含5的记录。原创 2023-09-06 22:07:42 · 749 阅读 · 1 评论 -
MySQL中的锁机制
抛砖引玉:多个查询需要在同一时刻进行数据的修改,就会产生并发控制的问题。我们需要如何避免写个问题从而保证我们的数据库数据不会被破坏。原创 2023-08-14 01:56:49 · 946 阅读 · 1 评论 -
MYSQL幻读问题
通俗来说就是,time1:事务A读取某个范围,time2:事务B在这个范围中插入了一条新记录并提交事务,time3:事务A再次读取该范围的记录时读取到事务B新增的记录。对于上面的SQL语句,会将(-∞,+∞)这个范围加锁,因此在这个范围内的插入都是不允许的,从而避免幻读。但是我们会发现update ID 为3的记录是成功的,也就是说事务A是可以感知到事务B新增的ID为3的记录。注意这时select出的记录中是没有ID为3的记录。Time1: 开启事务A , 查询表film中的所有记录。原创 2023-08-13 03:23:41 · 326 阅读 · 0 评论 -
一条SQL在MySQL中是如何执行的
你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限。,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证。2,在引擎层做了热点数据的缓存。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空.原创 2023-04-08 00:33:48 · 478 阅读 · 0 评论 -
深入理解MySQL底层数据结构算法
什么是索引?索引是帮助MySQL高效获取数据的排好序的数据结构索引的数据结构:二叉树,红黑树,Hash表,B-树分析select语句select * from t_user where age = 18;没有加索引没有加索引时,MySQL底层是通过一行一行的进行查找的,当找找到age=18的字段后依然不能确定后面的数据时候还有age=18的字段,所以依然需要继续查找,一次查找就是一次磁盘IO(Mysql 通过磁盘 IO 次数衡量查询效率的),如果一张表有10万条数据那么就需要进行10万次的原创 2021-08-01 23:05:02 · 505 阅读 · 0 评论