MySQL
文章平均质量分 59
从底层开始逐步完善Mysql知识体系
ZhengPsh
这个作者很懒,什么都没留下…
展开
-
06|Mysql内部组件结构
客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是由连接器完成的1、如果用户名或密码不对,你就会收到一个"Access denied for user"的错误,然后客户端程序结束执行。2、如果用户名密码认证通过,连接器会到权限表里面查出你拥有的权限。之后,这个连接里面的权限判断逻辑,都将依赖于此时读到的权限一个用户成功建立连接后,即使你用管理员账号对这个用户的权限做了修改,也不会影响已经存在连接的权限。修改完成后,只有再新建的连接才会使用新的权限设置。原创 2024-02-28 16:27:22 · 837 阅读 · 0 评论 -
05|MVCC原理
MVCC(Multi-Version Concurrency Control)机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。原创 2024-02-28 16:19:52 · 357 阅读 · 0 评论 -
05|锁优化
● 尽可能让所有数据检索都通过索引来完成,避免无索引行锁升级为表锁● 合理设计索引,尽量缩小锁的范围● 尽可能减少检索条件范围,避免间隙锁● 尽量控制事务大小,减少锁定资源量和时间长度,涉及事务加锁的sql尽量放在事务最后执行● 尽可能用低的事务隔离级别本质使用小粒度的锁。原创 2024-02-27 19:22:08 · 328 阅读 · 0 评论 -
05|Mysql锁分类
● 版本号● 读多场景● 第二次循环需要读取到最新的数据统计示例。原创 2024-02-27 18:40:44 · 984 阅读 · 0 评论 -
04|事务性能优化
● 并发情况下,数据库连接池容易被撑爆● 锁定太多的数据,造成大量的阻塞和锁超时● 执行时间长,容易造成主从延迟● 回滚所需要的时间比较长● undo log膨胀● 容易导致死锁。原创 2024-02-26 23:57:56 · 476 阅读 · 0 评论 -
04|事务的持久性
MySQL 中的 Redo Log(重做日志)是一种事务日志,用于记录数据库引擎对数据的修改操作。Redo Log 的主要目的是提供数据恢复和持久性的支持,确保即使在发生系统崩溃等情况下,数据库也能够保持一致性。原创 2024-02-25 23:15:26 · 345 阅读 · 0 评论 -
04|事务的隔离级别
数据库的事务隔离越严格,并发副作用越小,但付出的代价也就越大,因为事务隔离实质上就是使事务在一定程度上“串行化”进行,这显然与“并发”是矛盾的。同时,不同的应用对读一致性和事务隔离程度的要求也是不同的,比如许多应用对“不可重复读"和“幻读”并不敏感,可能更关心数据并发访问的能力。查看当前数据库的事务隔离级别: show variables like ‘tx_isolation’;设置事务隔离级别:set tx_isolation=‘REPEATABLE-READ’;原创 2024-02-25 19:04:58 · 372 阅读 · 0 评论 -
04|MySQL事务及ACID
事务是一组操作要么全部成功,要么全部失败,目的是为了保证数据最终的一致性。原创 2024-02-25 13:32:41 · 313 阅读 · 0 评论 -
03|count(*)查询优化
count(*)≈count(1)>count(字段)>count(主键 id)字段有索引,count(字段)统计走二级索引,二级索引存储数据比主键索引少,所以count(字段)>count(主键 id):count(*)≈count(1)>count(主键 id)>count(字段)字段没有索引count(字段)统计走不了索引, count(主键 id)还可以走主键索引,所以count(主键 id)>count(字段)原创 2024-02-25 13:16:45 · 355 阅读 · 0 评论 -
03|JOIN关联查询优化
先去t2表(驱动表)拿一行数据,然后去t1表(被驱动表)做关联, 关联之后把结果集存下来最后返回.原创 2024-02-25 13:08:48 · 318 阅读 · 0 评论 -
03|分页查询优化
主键连续且自增 & 结果按照主键排序理论上应该走主键索引, 为什么现在type是 all呢?● 查询第9w行数据开始的5条数据时属于深度分页。● limit 90000 5工作原理就是先读取前面90005行记录,舍弃前90000行记录,取5条想要的,● 查询行数越大,偏移量越大,性能越差。● 因此这条查询语句type 类型是all使用的全表扫描的方式没有单独的order by表示通过主键取排序, 并且我们可以看到主键是自增且连续。原创 2024-02-25 12:58:21 · 299 阅读 · 0 评论 -
03|Using filesort文件排序原理详解
用trace工具可以看到sort_mode信息里显示< sort_key, additional_fields >或者< sort_key, packed_additional_fields >对比两个排序模式,单路排序会把所有需要查询的字段都放到 sort buffer 中,而双路排序只会把主键 和需要排序的字段放到 sort buffer 中进行排序,然后再通过主键回到原表查询需要的字段。● 如果 字段的总长度小于max_length_for_sort_data ,那么使用 单路排序模式;原创 2024-02-25 01:09:56 · 422 阅读 · 0 评论 -
03|Order by与Group by优化
1、MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。2、order by满足两种情况会使用Using index。- order by语句使用索引最左前列。- 使用where子句与order by子句条件列组合满足索引最左前列。3、尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。原创 2024-02-24 23:17:15 · 878 阅读 · 0 评论 -
03|索引优化
创建联合索引 KEYnameageposition运行以sql代码,生成数据下所示。原创 2024-02-24 22:22:26 · 991 阅读 · 0 评论 -
02|Explain详解
不会执行实际sql操作。Explain用于分析。原创 2024-02-23 23:56:35 · 320 阅读 · 0 评论 -
01|Mysql联合索引&最左前缀原则
三个字段的排序:按照索引键的先后顺序维护;如果第一个字段就排好序了,后面的字段就不会再排序了,如果第一个字段都相等,那么就排第二个字段;只有第1行的sql走了索引,符合最左前缀原理。where语句中的查询。原创 2024-02-23 22:14:57 · 626 阅读 · 0 评论 -
01|Mysql底层存储引擎
索引和数据存储在一起。叶子节点存储了完整的数据记录;原创 2024-02-22 21:12:39 · 525 阅读 · 0 评论 -
01|Mysql索引底层数据结构与算法
索引是帮助MySQL高效获取数据的排好序的数据结构。原创 2024-02-22 02:59:11 · 1484 阅读 · 0 评论