![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
zebphper
这个作者很懒,什么都没留下…
展开
-
分表方式
水平分表针对数据量太大1、%取模就是取余(分表永远在20以内)做法:设置求模数,分表key %求模数 =分表的key好处:永远不会超过指定的表数量2、/取余就是得出结果(分表的数量无限多)做法:设置一个表最大的数量,分表key /表最大数量 =分表key好处:可以控制一张表数据的最大数据量垂直分表针对字段太多,解决表的io问题1、select...原创 2020-01-27 19:41:18 · 320 阅读 · 0 评论 -
幻读
更改不是幻读,新增是幻读幻读的问题1.语义上,锁表的行数可能会变化2.数据一致性会有问题,binlog同步问题(把所有行都加上锁,阻止不了新增的语句)解决幻读间隙锁(保证锁了不能新增)...原创 2019-06-29 23:11:10 · 933 阅读 · 0 评论 -
一条语句为什么执行慢
查询长时间不返回 等MDL锁 有线程持有MDL写锁(可以kill掉) 等flush flush table会导致表被关掉,会等待表上所有的语句执行完毕 等行锁 查询占用写锁sys.innodb_lock_waits查询慢 没有lock in share mode慢(保证一致性读,就需要使用日志回滚100000次) 加上lock in sh...原创 2019-06-28 23:08:41 · 105 阅读 · 0 评论 -
sql逻辑相同但性能差距大
sql语句中的函数会导致索引失效隐式转换(id=123(varchar))关联查询两个表的字符集不一样(字符集会转乘他的超集)原创 2019-06-27 23:04:50 · 137 阅读 · 0 评论 -
正确的显示随机消息
mysql> select word from words order by rand() limit 3;扫描行数2003,自己看扫描行数三种rand方法原创 2019-06-26 23:08:56 · 96 阅读 · 0 评论 -
order by 如何工作
explain分析Extra字段中的'Using files'表示需要排序,mysql给每个线程分配内存用于排序select city,name,age from t where city='杭州' order by name limit 1000 ;1、初始化sort_buffer,确定将需要返回的字段放入2、从索引city中找到满足条件的主键ID3、到主键ID索引,...原创 2019-06-23 22:20:42 · 91 阅读 · 0 评论 -
count(*)的实现方式
引擎对比 事务 并发能力 数据安全 count(*) InnoDb 把 MyISAM 表的总行数存在磁盘里 引擎对比 count(*) InnoDb 读取每一行记录做累加 MyISAM 表的总行数存在磁盘里(加where条件一样很慢) MV...原创 2019-06-22 23:29:23 · 184 阅读 · 0 评论 -
数据删了一半,表文件大小不变
表的空间回收InnoDB:表结构定义和数,mysql 8.0之前放在以.frm为后缀的文件里,mysql8.0之后把结构放在系统数据表中(表结构空间小)innodb_file_per_tableon 每个表存储在.ibd为后缀的文件中(drop table系统会直接删除这个文件,容易管理)推荐 删除行,表空间没有被回收? 数据页复用:随意使用(delete...原创 2019-06-22 00:00:37 · 285 阅读 · 0 评论 -
Mysql会选错索引
实例:delete from t;//整表删除call idata(); //执行存储过程select * from t where a between 10000 and 20000;这里没有用到a索引。为什么?优化器选择索引的依据:扫描行数、是否使用临时表、是否排序(order by有没有用上)基数:索引上不同值的个数,基数越大,索引区分度越好(相当于唯一索引,查到当...原创 2019-06-17 23:27:05 · 150 阅读 · 0 评论 -
索引
目录哈希表有序数组搜索树索引普通索引唯一索引覆盖索引索引模型哈希表用哈希函数把key转换成确定的位置问题:哈希函数算出的位置相同怎么处理解决:相同位置下还有一个链表,没有顺序(插入方便,查询费事)有序数组用身份证做索引有序排列吗?搜索树二叉树(100w节点,树高20,一次可能要访问20个数据块(都是在磁盘里,所以效率很低)),n叉树更...原创 2019-06-11 22:37:40 · 97 阅读 · 0 评论 -
事务 隔离性
数据库的多版本并发控制(MVCC)多个事务同时执行会出现的问题脏读不可重复读幻读事务隔离级别读未提交:事务没提交,别的事务可以看到读提交:事务提交,别的事务才能看到(视图)可重复读:执行过程中,事务看到的数据跟启动时一样。未提交变其它事务不可见(视图),场景:统计当前的数据情况,新加入的数据不会影响,begin transaction不启动事物,第一条语句才...原创 2019-06-10 22:31:19 · 89 阅读 · 0 评论 -
SQL查询语句执行
show processlist连接器:客户端建立连接、获取权限(非实时权限)、维持和管理链接查询缓存:key-value形式,如果命中直接返回查询结果,弊端:失效非常频繁,将参数query_cache_type设置成demand,不缓存,可以使用SQL_CACHE来显示缓存,8.0开始测底没有分析器:词法分析(识别表名、识别列、select关键字)、语法分析(分析语句是否正确)...原创 2019-06-09 21:10:47 · 119 阅读 · 0 评论 -
表锁和全局锁
目录锁的作用:处理并发问题锁的分类:全局锁表级锁行锁锁的作用:处理并发问题锁的分类:全局锁命令:Flush tables with read lock(FTWRL) ,这个库处理只读状态全库逻辑备份问题:1、主库备份,业务停摆 2、从库备份,不能执行binlog,导致主从延迟(在不支持事物的引擎下可以使用)有事务机制的备份:mysqldump ...原创 2019-06-13 21:23:03 · 99 阅读 · 0 评论