MySQL专题
文章平均质量分 94
MySQL知识点详解
小超同学卷起来
这个作者很懒,什么都没留下…
展开
-
深入理解 Mysql索引底层数据结构与算法
杠精们:如果数据量超过 2000 多万怎么办,那就分库分表或者就再加一层插个常识:我们所熟知的 MyISAM 和 InnDB 数据库存储引擎。原创 2023-06-14 00:18:52 · 232 阅读 · 0 评论 -
Explain详解与索引最佳实践
mysql执行计划explain结果里的key有使用索引,如果select后面查询的字段都可以从这个索引的树中获取,这种情况一般可以说是用到了覆盖索引,extra里一般都有using index;覆盖索引一般针对的是辅助索引,整个查询结果只通过辅助索引就能拿到结果,不需要通过辅助索引树找到主键(即不需要回表),再通过主键去主键索引树里获取其它字段值。原创 2023-06-15 23:30:31 · 1257 阅读 · 0 评论 -
MySQL索引优化实战(一)
引入了索引下推优化,在联合索引遍历过程中,匹配到名字是 ‘LiLei’ 开头的索引之后,同时还会在索引里过滤age和position这两个字段,拿着过滤完剩下的索引对应的主键id再回表查整行数据(首先会在联合索引树中匹配到”LiLei“开头的索引,然后拿这些匹配到的对应的主键挨个去做回表操作,去主键索引树找出对应的记录,再去比对age和position是否符合。虽然使用了强制走索引让联合索引第一个字段范围查找也走索引,扫描的行rows看上去也少了点,提供先进的推理,复杂的指令,更多的创造力。原创 2023-06-18 01:07:38 · 234 阅读 · 0 评论 -
MySQL 索引优化实战(二)
在决定哪个表做驱动表的时候,原创 2023-06-19 18:48:39 · 360 阅读 · 0 评论 -
Mysql事务原理与优化最佳实践
2)打开一个客户端B,并设置当前事务模式为serializable,更新相同的id为1的记录会被阻塞等待,更新id为2的记录可以成功,说明在串行模式下innodb的查询也会被加上行锁,如果查询的记录不存在会给这条不存在的记录加上锁(这种是间隙锁,后面会详细讲)。5)在客户端A执行更新语句update account set balance = balance - 50 where id =1,lilei的balance没有变成350,居然是400,是不是很奇怪,数据不一致啊,原创 2023-06-23 21:16:54 · 299 阅读 · 0 评论 -
Mysql锁机制与优化实践以及MVCC底层原理剖析
5.尽可能用低的事务隔离级别(RC)原创 2023-06-25 22:13:46 · 379 阅读 · 0 评论 -
Innodb底层原理与Mysql日志机制深入剖析
我们知道由于MySQL是开源的,他有非常多种类的客户端:navicat,mysql front,jdbc,SQLyog等非常丰富的客户端,包括各种编程语言实现的客户端连接程序,这些客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是有连接器完成的。你可以看到,如果查询命中缓存,MySQL 不需要执行后面的复杂操作,就可以直接返回结果,这个效率会很高。,如果没有,就会返回没有权限的错误,如下所示 (在工程实现上,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证)。原创 2023-06-26 22:40:57 · 177 阅读 · 0 评论 -
MySQL全局优化与Mysql 8.0新增特性
从上图可以看出SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间。假设服务器配置为:CPU:32核内存:64G下面参数都是服务端参数,默认在配置文件的 [mysqld] 标签下=3000连接的创建和销毁都需要系统资源,比如内存、文件句柄,业务说的支持多少并发,指的是每秒请求数,也就是QPS。一个连接最少占用内存是256K,最大是64M,如果一个连接的请求数据超过64MB(比如排序),就会申请临时空间,放到硬盘上。原创 2023-06-30 23:28:16 · 168 阅读 · 0 评论