随笔分类 -  mysql

摘要:key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在组合索引的时候,判断该索引有多少部分被使用到非常重要。在计算key_len时,下面是一些需要考虑的点: 索引字段的附加信息:可以分为变长和定长数据类型讨论,当索引字段为定长数据类型时,如char,int,datetime, 阅读全文
posted @ 2020-12-21 13:44 开顺 阅读(224) 评论(0) 推荐(0)
摘要:SET @json = '["a", "b", "b", "a", "c"]';SELECT Json_arrayagg(dt.val) AS unq_json_arrayFROM (SELECT DISTINCT Json_extract(@json, Concat('$[', seq.n, '] 阅读全文
posted @ 2020-11-17 09:49 开顺 阅读(2365) 评论(1) 推荐(0)
摘要:摘抄自:https://yjclsx.blog.csdn.net/article/details/83898545 mysql中常用的三种插入数据的语句 insert into表示插入数据,数据库会检查主键,如果出现重复会报错; replace into表示插入替换数据,需求表中有PrimaryKe 阅读全文
posted @ 2020-11-10 11:27 开顺 阅读(2428) 评论(0) 推荐(0)
摘要:转发自:https://blog.csdn.net/mu_wind/article/details/107644632 前言 “你一定又写了烂SQL了!”,“你怎么这样凭空污人清白……慢查询,慢查询不能算烂……慢查询!……程序猿的事,能算烂么?”本文从SQL执行效率方面略作研究,偏向基础性总结,但力 阅读全文
posted @ 2020-11-09 16:17 开顺 阅读(347) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/eagle89/article/details/81315981 阅读全文
posted @ 2020-10-30 16:26 开顺 阅读(83) 评论(0) 推荐(0)
摘要:查看优化器状态 show variables like 'optimizer_trace'; 会话级别临时开启 set session optimizer_trace="enabled=on",end_markers_in_json=on; 设置优化器追踪的内存大小 set OPTIMIZER_TR 阅读全文
posted @ 2020-07-14 21:56 开顺 阅读(189) 评论(0) 推荐(0)
摘要:一、死锁示例考虑下面一个MySQL死锁的示例: 有如下一张表: CREATE TABLE `test` ( `id` int(20) NOT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAUL 阅读全文
posted @ 2020-06-29 09:47 开顺 阅读(2242) 评论(0) 推荐(0)
摘要:解决死锁之路(终结篇)- 再见死锁 2019-09-03阅读 1.5K0 一、开启锁监控 在遇到线上死锁问题时,我们应该第一时间获取相关的死锁日志。我们可以通过 show engine innodb status 命令来获取死锁信息,但是它有个限制,只能拿到最近一次的死锁日志。MySQL 提供了一套 阅读全文
posted @ 2020-06-27 21:39 开顺 阅读(1713) 评论(0) 推荐(1)
摘要:Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select for update/lock in share mode 对事 阅读全文
posted @ 2020-06-27 21:27 开顺 阅读(342) 评论(0) 推荐(0)
摘要:脏读/不可重复读的概念都比较容易理解和掌握,这里不在讨论 事务隔离级别(tx_isolation) mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbol值描述 读未提交 READ-UNCOMMITTED 0 存在脏读、不可重复读、幻读的问题 读已提交 READ-COMMITT 阅读全文
posted @ 2020-06-12 16:39 开顺 阅读(2654) 评论(0) 推荐(5)
摘要:MySQL执行计划中的extra列中表明了执行计划的每一步中的实现细节,其中包含了与索引相关的一些细节信息其中跟索引有关的using index 在不同的情况下会出现Using index, Using where Using index ,Using index condition等那么Using 阅读全文
posted @ 2020-06-10 09:49 开顺 阅读(391) 评论(0) 推荐(0)
摘要:什么场景下用表锁 InnoDB默认采用行锁,在未使用索引字段查询时升级为表锁。MySQL这样设计并不是给你挖坑。它有自己的设计目的。即便你在条件中使用了索引字段,MySQL会根据自身的执行计划,考虑是否使用索引(所以explain命令中会有possible_key 和 key)。如果MySQL认为全 阅读全文
posted @ 2020-03-23 13:45 开顺 阅读(895) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-03-23 00:16 开顺 阅读(129) 评论(0) 推荐(0)
摘要:一、MySQL索引底层的实现 索引是帮助MySQL高效获取数据的排好序的数据结构; 上图中有一张表,表名为 t ,表中有7条数据;使用 select * from t where t.clo2 = 89 查询; 1、若表中没有创建索引,则会全表扫描,一条一条的遍历查询,需要遍历 6 次,查询一行数据 阅读全文
posted @ 2020-03-22 18:01 开顺 阅读(1169) 评论(0) 推荐(1)
摘要:创建 test 测试表 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c1` varchar(10) DEFAULT NULL, `c2` varchar(10) DEFAULT NULL, `c3` varchar(10) 阅读全文
posted @ 2020-03-22 16:33 开顺 阅读(390) 评论(0) 推荐(0)
摘要:使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈; 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL; 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放 阅读全文
posted @ 2020-03-22 16:29 开顺 阅读(1730) 评论(1) 推荐(0)
摘要:一、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类索引: 聚集索引(clustered index) 普通索引(secondary index) InnoDB聚集索引和普通索引有什么差异? InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个 阅读全文
posted @ 2020-03-20 16:03 开顺 阅读(1614) 评论(0) 推荐(0)
摘要:结论(以innodb为例) a、非聚簇索引存储了对主键的引用,如果select字段不在非聚簇索引内,就需要跳到主键索引(上图中从右边的索引树跳到左边的索引树),再获取select字段值 b、如果非聚簇索引值重复率高,那么查询时就会大量出现上图中从右边跳到左边的情况,导致整个流程很慢 c、如果wher 阅读全文
posted @ 2020-03-20 16:02 开顺 阅读(907) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/w2064004678/article/details/83012387 准备 测试环境:Mysql 5.7.20-log 数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别 创建 阅读全文
posted @ 2019-08-13 18:08 开顺 阅读(37332) 评论(6) 推荐(2)
摘要:转载自:https://zhuanlan.zhihu.com/p/23713529 (一)什么是存储过程?有哪些优缺点? 存储过程是一些预编译的SQL语句。 更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多 阅读全文
posted @ 2019-06-20 21:55 开顺 阅读(1027) 评论(0) 推荐(0)