
MySQL
文章平均质量分 83
Coder 之路
这个作者很懒,什么都没留下…
展开
-
MySQL进阶【十三】—— 深度探究 BufferPool 提升效率的原理
BufferPool是什么BufferPool是如何工作的故障重启后如何保障数据恢复未完待续。。。原创 2020-10-08 09:53:52 · 392 阅读 · 0 评论 -
MySQL进阶【十二】—— 深挖Innodb事务的多版本控制(MVCC)的实现原理
什么是多版本控制多版本控制解决优势实现原理可重复读和读已提交的MVCC有何不同原创 2020-10-08 09:48:16 · 410 阅读 · 0 评论 -
MySQL进阶【十一】—— Innodb 事务的两阶段提交
两阶段提交原创 2020-10-08 09:44:42 · 1523 阅读 · 0 评论 -
MySQL进阶【十】—— 幻读的解决方案“临键锁”
Innodb 的事务隔离级别幻读的问题什么是临键锁行锁间隙锁【GAP-LOCK】原创 2020-10-08 09:42:22 · 2379 阅读 · 5 评论 -
MySQL进阶【八】—— 单路排序和双路排序
单路排序双路排序原创 2020-10-08 09:36:32 · 1031 阅读 · 0 评论 -
MySQL进阶【七】—— count(*)、count(1)、count(id)到底谁更快
前言一直以来MySQL查询数量到底谁最快,一直是一个比较热的话题,且很多人搞不懂真相,本文将带你从底层原理去了解,到底count(*)、count(1)、count(id)、count(字段)谁更快示例表+-----------+-----------------------------------------------------------------------------------------------------------------------------------------原创 2020-10-02 17:36:21 · 844 阅读 · 0 评论 -
MySQL进阶【六】—— MySQL的嵌套循环连接与基于块的嵌套循环连接
示例表CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,a int(11) DEFAULT NULL,b int(11) DEFAULT NULL,PRIMARY KEY (id),KEY idx_a (a)) ENGINE=InnoDB DEFAULT CHARSET=utf8;create table t2 like t1;‐‐ 插入一些示例数据‐‐ 往t1表插入1万行记录drop procedure if exists in原创 2020-09-29 19:48:45 · 2080 阅读 · 1 评论 -
MySQL进阶【五】—— MySQL分页查询优化
分页查询优化分页查询在项目中非常常见,一般数据量越大,分页的速度越慢,mysql在limit时,不是先找到limit的起始行,而是将limit的全部数据检索出来,再去到需要的数据块,概念可能比较模糊,没关系,接下来案例中继续讲解mysql> select * from employees limit 10000,10;+-------+------------+-------+----------+---------------------+| id | name | a原创 2020-09-29 15:05:43 · 359 阅读 · 0 评论 -
MySQL进阶【九】—— MySQL查询优化器是如何选择索引的
MySQL查询优化器是如何选择索引的MySQL的查询优化器,具有非常强大的功能,那MySQL的查询优化器是如何选择索引的呢?本文只探究查询优化器选择索引的大体逻辑,没有深入到C++源码,日常开发同学了解到这个程度足够了,如果是DBA同学,显然需要去读一读MySQL的C++源码通过MySQL提供的trace工具,我们一起探究下查询优化器都做了什么mysql提供了trace工具,默认是关闭的,可以通过命令将其打开mysql> set session optimizer_trace="en原创 2020-09-27 19:16:07 · 3493 阅读 · 0 评论 -
MySQL进阶【十四】—— MySQL的语句执行顺序(必看!!!)
今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序:sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。一、sql执行顺序(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum…(7)having转载 2020-09-25 14:49:13 · 293 阅读 · 0 评论 -
MySQL进阶【十五】—— MySQL优化之my.conf配置详解
转载地址:https://blog.youkuaiyun.com/u014044812/article/details/78929579最近项目不太忙,所以有时间静心来研究下mysql的优化,对于MySQL的设置是否合理优化,直接影响到网站的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识,同时还需要长时间的观察统计并且根据经验进行判断,然后设置合理的参数。 下面我们了解一下MySQL优化的一些基础,MySQL的优化我分为两个部分,一是服务器物理硬件的优化,二是MySQ.转载 2020-09-25 14:18:43 · 380 阅读 · 0 评论 -
MySQL进阶【四】—— MySQL索引优化实战
示例表CREATE TABLE `employees` (`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` timestamp NO原创 2020-09-24 20:21:15 · 595 阅读 · 0 评论 -
MySQL进阶【三】—— Explain详解与实战
Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL前期准备官方文档:https://dev.mysql.com/doc/refman/5.7/en/explain-output.htmlSQL语句示例表: DROP TABLE IF EXISTS `actor`; CREATE T原创 2020-09-22 20:21:07 · 354 阅读 · 0 评论 -
MySQL进阶【二】—— 一文讲清楚为什么MySQL选择B+树索引
MySQL的几种索引结构https://www.cs.usfca.edu/~galles/visualization/BST.html 数据结构的一个学习网站B树B树在MySQL的结构1、叶子节点具有相同的深度,叶子阶段的指针都为空2、叶子节点和跟节点,均挂有数据块(因所有节点都挂有数据块,大大降低了索引树存储索引的数量)3、所有索引不重复4、节点从左到右是递增的Hash1、数组+链表的实现方式(与Java中的hashmap类似)2、对索引key进行一次hash运算就可以原创 2020-09-20 12:15:46 · 828 阅读 · 1 评论 -
MySQL进阶【一】—— 一条SQL是如何执行的
MySQL 架构分层server 层server层主要包括连接器、词法分析器、查询优化器、执行器连接器:主要用途,客户端连接到mysql的服务器mysql -u -h -p //连接mysql的命令词法分析器:将一条SQL语句拆分,结构化,形成语法树。语法不正确、字段或表名不正确,会在这个阶段被发现,并进行错误提示1、词法分析2、语法分析3、语义分析4、构造语法树5、生成执行计划6、计划的执行语法树是如何生成的创建一张表CREATE TABLE `test`原创 2020-09-20 10:49:30 · 312 阅读 · 0 评论 -
Group by + Limit 的效率优化
背景最近接手一个项目,清洗历史表中的数据,在原有表中添加一个新的字段,并根据user_id进行分组,查询到证件号、证件类型后,换取唯一编码,将唯一编码存入历史数据中,以达到未来替换user_id的效果。清洗数据的大体思路,将数据库中带清洗数据分10段,每段交给一条线程负责处理,项目启动后,出现一个问题,查询数据库中的数据出现 timeOut,排查发现是因为 limit m,n 中的m太大,导致...原创 2019-04-23 20:45:53 · 8274 阅读 · 2 评论