玩转mysql
文章平均质量分 69
以游戏的角度去玩mysql
学习上的Monkey
这个作者很懒,什么都没留下…
展开
-
记一次数据库 MySQL Server has gone away的解决过程
MySQL Server has gone away问题产生?在一次清理完 数据库表的碎片之后,并重启了Mysql实例 线上项目进行sql查询时则产生了下面的问题。 MySQL Server has gone away问题排查。MySQL服务宕机了 (因为已经重启 所以排除)Mysql的链接进程被主动kill掉。(这个也排除了 因为无人操作)Mysql 链接超时 ,在某个mysql长连接的很久没有新的请求,达到了server端的timeout,被server强行关闭,此后再通过这个c原创 2022-01-18 10:12:51 · 791 阅读 · 0 评论 -
MySQL 第十一期 Join 关联查询分析
Mysql join 关联查询的详解 清晰知道在何时我们能使用join去进行查询,而不是一味的禁止Join的使用原创 2021-12-06 15:38:44 · 1051 阅读 · 0 评论 -
Mysql第十期 分析复杂的SQL查询
复杂查询的处理,是一件很重要的事情,讲它拆成多个简单查询是可以大幅度提高我们业务的查询能力的。原创 2021-12-04 11:53:40 · 776 阅读 · 0 评论 -
MySQL第十期 redo log日志分析
日志分析前言日志在更新操作中的流程日志种类redo log (重做日志)binlog(归档日志)redo log 与binlog 的区别undo log (回滚日志)general log 普通日志relay log 中继日志前言随着mysql学习的不断深入,我们能够发现,日志在Mysql的流程中起着非常重要的作用,所以今天我们来特别学学它究竟使用了多少种日志,并且在MySQL的运行中起着怎样的作用。日志在更新操作中的流程我们来看看这条更新语句涉及到的操作:黄色(Innodb 内部执行) 红原创 2021-11-24 16:45:46 · 770 阅读 · 0 评论 -
Mysql 第九期 锁机制(下)
锁机制前言不同存储引擎对应实现的锁机制Innodb的锁使用到的技术主要实现算法优点:缺点加锁规则总结推荐书籍前言在上一讲的隔离级别中,提到了Innodb的锁机制,今天我们来特别聊聊对应的锁的机制。在讲锁之前我们要明白一点。锁机制是在存储引擎中实现的。所以对应不同的存储引擎,锁的机制是不一样的。不同存储引擎对应实现的锁机制行锁表锁MyISAM×√InnoDB√√Innodb的锁概念:我们知道Innodb的锁是行锁,那在聊行锁之前 我们要明白一件事情,那原创 2021-11-23 14:24:23 · 582 阅读 · 0 评论 -
MySQL第九期 隔离级别(上)
隔离级别前言前言在讲隔离级别之前,我们先来看看隔离级别的出现是为了防止什么情况的产生,下面表格显示了各种隔离级别下会遇到的问题:(x 代表不会产生 √ 代表会产生)隔离级别脏读不可重复读幻读未提交读√√√已提交读×√√可重复读××√可串行化×××从表格中可以看到,对应产生的几种会引起错...原创 2021-11-23 13:38:16 · 568 阅读 · 0 评论 -
MySQL 第八期 事务ACID的分析
事务分析ACID四大原则atomicity 原子性consistency 一致性isolation 隔离性durability 持久性ACID四大原则atomicity 原子性定义:事务的所有操作,要么全部完成,要么全部不完成,不会结束在某个中间环节。consistency 一致性定义:事务开始之前和事务结束之后,数据库的完整性限制未被破坏。isolation 隔离性定义:当多个事务并发访问数据库中的同一数据时,所表现出来的相互关系。通俗定义:v1事务与v2之间的数据是不能互相访问原创 2021-11-22 17:47:45 · 462 阅读 · 0 评论 -
MySQL 第七期 索引的分析 (二)聚簇索引与非聚簇索引
数据结构聚簇索引数据聚合:聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。InnoDB的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。唯一性:当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中,术语"聚簇"表示数据行和相邻的键值紧凑地存储在一起。因为无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。叶子节点:主键值,事务ID,用于事务和MVCC的回滚指针以及所有的剩余列。优点可以把相关数据保存在一起,减少磁盘I/O数据访问更快。因为聚簇索引原创 2021-11-18 18:00:26 · 915 阅读 · 0 评论 -
MySQL 第六期 索引的分析 (一)
索引分析索引类型B+Tree索引全值匹配匹配最左前缀匹配列前缀匹配范围精确匹配某一列并范围匹配另一列只访问索引的查询索引的优点索引三星原则索引类型B+Tree索引B-Tree索引按顺序存储的,并且每一个叶子页到根的距离相同,Innodb的树结构三个特征:非叶子节点只存储键值信息所有叶子节点之间都有一个链指针数据记录都存放在叶子节点中。B+Tree索引类型根据叶子结点存储的内容,可以分为主键索引和非主键索引:主键索引的叶子节点存的是整行数据。也被称为"聚簇索引"。非主键索引的叶原创 2021-11-18 17:23:59 · 545 阅读 · 0 评论 -
MySQL 第五期 如何优化SQL
优化SQL如何优化SQL全表扫描还是索引扫描如何创建索引减少索引的修改多表关联字段加索引全模糊匹配查询排序/分组索引复杂查询还是拆分几个小查询如何优化SQL全表扫描还是索引扫描先来看看下面对于大表,加索引与不加索引的区别。为何不提小表,是因为对于小表来说IO调用次数和返回相差不大,所以就不特别提出来讲了。类型全表索引查询速度慢快更新速度快慢插入速度慢快从上面示例中可以看到,在查询方面有索引确实会效率很多,但是在更新和插入涉及到表操作的就会相对原创 2021-11-18 09:36:23 · 432 阅读 · 0 评论 -
Mysql第四期 索引无效的几种情况分析
索引失效前情提要隐式转换关联查询字符集where子句里对索引列上有数学运算或者函数以上三种情况总结like左模糊匹配联合索引不是最左边的索引字段前情提要大家开发几年下来可能或多或少也知道了 大概会导致索引失效的几种情况。比如:like, not in这种。今天我们来详细聊聊。以下会例子会用到的表结构CREATE TABLE `user`(`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(30) NOT NULL,`age` int原创 2021-11-17 18:22:50 · 668 阅读 · 0 评论 -
Mysql 第三期 如何分析查询性能
MySQL执行计划分析当有慢查询或者执行SQL遇到瓶颈时,我们可以参考使用MySQL执行计划分析:查看SQL执行计划① explain SQL;② desc 表名;③ show create table 表名;通过Profile 定位QUERY代价消耗① set profiling = 1;② 执行SQL;③ show profiles;获取Query_ID.④ show profile for query Query_ID; 查看详细的profile信息通过Optimiz原创 2021-11-17 10:47:23 · 918 阅读 · 0 评论 -
Mysql第二期 优化数据访问之二 减少扫描的行数
扫描额外的记录在确定了只返回需要的数据以后,接下来看看查询为了结果是否扫描了过多的数据。我们有以下几个指标判断:响应时间扫描的行数返回的行数这三个指标都会记录到慢日志中,所以检查慢日志记录是找出扫描行数过多的查询的好办法。响应时间响应时间是两个部分之和:服务时间和排队时间服务时间是指数据库处理这个查询真正花的时间排队时间是指服务器因为等待某些资源而没有真正执行查询的时间。可能是等I/O操作完成,也可能是等待行锁,等等。扫描的行数和返回的行数对于上面的响应时间的不准确性原创 2021-11-16 15:19:45 · 1555 阅读 · 0 评论 -
Mysql第一期 为什么查询速度会慢
查询的生命周期我们想要了解一个查询的速度慢的原因,首先需要了解的就是这个查询的生命周期。查询的生命周期大致可以按照顺序来看:客户端,到服务器服务器上进行解析,生成执行计划返回结果给客户端其中执行计划可以说是查询生命周期中最重要的阶段,因为它包括了大量为检索数据到存储引擎的调用调用后的数据处理,包括排序、分组等在完成这些任务时,查询就需要在不同的地方耗费时间了,包括以下几点:网络CPU计算生成统计信息执行计划锁等待(互斥等待)底层存储引擎检索数据的调用操作,这原创 2021-11-16 14:49:19 · 964 阅读 · 0 评论 -
Mysql扩展知识点 死锁分析
例子从上面我们可以看到如果双方都在等待对方解锁时,将会死锁。我们来看看产生死锁的四个条件?互斥条件: 一个资源每次只能被一个进程使用;请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在没使用之前,不能强行剥夺。循环等待条件:多个进程之间形成的一种互相循环等待资源的关系。当出现死锁以后有两种策略:进入等待,直到超时。这个超时时间可以通过参数innodb_lock_wait_timeout来设置InnoDB引擎发起死锁检测,并且会自原创 2021-11-16 11:42:10 · 451 阅读 · 0 评论