mysql
pl在之心
立足当下
展开
-
mysql 概念
1. 回表 1)使用聚簇索引查询只需要查询一次 (叶子节点有该行数据) 2) 使用覆盖索引查询,也只需要查询一次,无需回表 3) 使用普通索引查询非索引字段,需要回表查询多次 2.聚簇索引和覆盖索引 1) 主键默认使用聚簇索引 2) 没有主键的唯一索引也会使用聚簇索引 3) 覆盖索引用于减少磁盘访问次数,避免回表查询 3. 最左前缀列 联合索引[A,B] 生效需要先使用...原创 2020-01-17 15:33:15 · 148 阅读 · 0 评论 -
mysql 高效的索引策略
1. 索引列独立使用,避免使用函数 例如 where to_char(xx,xx)=xx 2. 索引选择性尽量大一些 索引选择性=不重复的索引值和总记录的比值,返回在0到1之间 尽量选择接近1的列建立索引,例如性别 sex不适合作为索引,因为它本身就只有两种可能性,索引选择性很低 3. 避免给很长的列建索引 1) 索引本身也需要占用空间 2) 列很长,查询的效...原创 2020-01-17 11:32:22 · 138 阅读 · 0 评论 -
Mysql InnoDB支持哈希索引吗
1. 问题 Mysql InnoDB支持哈希索引吗 上图可以看出: InnoDB使用哈希索引来实现自适应哈希索引功能 2. 描述 InnoDB引擎有一个页数的功能叫做自适应哈希索引。 当InnoDB注意到某些索引值被使用非常频繁的时候,它会在内存中基于B-Tree索引之上再创建一个哈希索引,使得B-Tree索引也具有哈希索引的优点。这是一个完全自动,内部的行为,无法进行...原创 2020-01-17 10:46:58 · 568 阅读 · 0 评论 -
压测时出现mysql数据库无法获取连接问题
1. 背景 压测时出现mysql数据库无法获取连接问题 2. 查找原因 查看最大连接数 show variables like 'max_connections'; 查看当前连接情况 show full processlist 发现测试环境配置的最大连接数为150,而压测服务器使用3台机器,每台最大100个连接, 超过最大连接数,导致无法获取新的连接 3. 解决 mysql...原创 2019-12-11 10:58:40 · 666 阅读 · 0 评论 -
一条查询语句mysql 源代码的路径
一条查询语句在mysql 源代码的执行路径 使用mysql数据库已经有好几年的时间,一直没有时间去研究mysql的内部执行过程,只能通过一些固定的 思维导向和理论去猜测问题出现的缘由,最近有时间探查一下mysql的源码。 main方法 mysql的启动方法也是main方法,并非用java语言编写,而是c和c++语言编写的。 一条查询语句大概会经过下面几个模块的处理: 网络连接监听; 线程池处理请...原创 2019-11-20 14:07:10 · 380 阅读 · 0 评论 -
Mysql查询语句正则匹配
1.前言 最近遇到MySQL模糊查询的问题,发现MySQL也支持正则表达式。其中,like语句是完全匹配,regexp是部分匹配。 2.完全匹配like2.1 like模糊查询 like支持的正则包括%和_。其中%代表任意个字符,_代表任意一个字符。 2.2 常用方式 _使用 select * from user where name like '张_林';代表查询user表中n原创 2016-12-18 14:52:18 · 3272 阅读 · 0 评论 -
MySQL常用对象
1.前言 MySQL常用的对象有数据库,表,索引,存储过程,触发器,视图,约束等,数据库和表就不说了,我们来看下索引,存储过程,触发器,视图和约束 2.简介2.1 存储过程 2.1.1什么是存储过程 存储过程就是可以把多个sql语句组合起来,写出类似函数的脚本,然后使用 call 存储过程名 来调用 2.1.2怎么创建存储过程? CREATE PROCEDURE tes原创 2016-12-20 13:11:59 · 1286 阅读 · 0 评论 -
Mysql总结
1.详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)(转) 2. Mysql explain详解(转) 3. Msql 底层数据结构B+树(转) 4. InnoDB引擎与MyIsam引擎的区别 5. Mysql binlog日志 (数据恢复,主从同步复制)(转) 6. Mysql主从同步原理(转) 7. 主键索引与普通索引的区别 8. 事务隔离级别 9. ...原创 2019-08-13 14:36:20 · 86 阅读 · 0 评论