张治峰的博客

MySQL 锁机制

mysql
概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。 锁分类 从性 ...
阅读更多

MySQL 事务隔离级别

mysql
概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了锁机制、MVCC多版本并发控制隔离机制,解决多事务并发问 ...
阅读更多

JOIN 优化 及 NLJ&BNL 算法

mysql
表准备# 示例表:CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT N ...
阅读更多

mysql之单/双路排序

mysql
Using filesort 当语句中使用到 order by 排序时,尽可能遵照索引键的最佳左前缀,在索引列上进行排序操作。 如果排序字段 不能通过索引树的排序时 就会出现 using filesort 文件排序。如下图执行语句。 EXPLAIN SELECT * from employ ...
阅读更多

in、exist 与 count(*)优化

mysql
in 与 exist 原则: 小表驱动大表 , 即小的数据集驱动大的数据集(A.id 索引字段) in 当B表的数据集小于A表的数据集时,in优于exists 语句分析 select * from A where id in (select id from B)等价于for(selec ...
阅读更多

分页查询优化

mysql
示例表参照 Order by与Group by优化 背景平时开发过程中在我们的业务系统实现分页功能 都会使用到如下sql实现 select * from employees limit 10000,10; 这条语句表示在 employees 中取出从 10001 行开始的 10 行记录。 ...
阅读更多

Order by与Group by优化

mysql
在看本篇文章时一起跟着操作更有感觉呦~ 前期准备# 创建测试表CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT N ...
阅读更多

MySQL索引分析及设计原则

mysql
在看本篇文章时一起跟着操作更有感觉呦~ 前期准备# 创建测试表CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT N ...
阅读更多

MySQL Optimizer 分析(trace 工具)

mysql
trace工具 MySQL5.6版本后提供了对SQL的跟踪工具trace,通过使用trace可以让我们明白optimizer如何选择执行计划的。 ⚠️开启trace工具会影响mysql性能,所以只能临时分析sql使用,用 完之后立即关闭 使用方式 开启 traceset session o ...
阅读更多

MySQL索引实战(mysql5.7.33)

mysql
前期准备drop table if EXISTS `employees` ;CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` va ...
阅读更多
Prev Next