- show variables like ‘%datadir%’
- 从8.0开始不再使用查询缓存
版本差异
5.7之后【子查询order by无效】
mysql 5.7 5.6排序mysql 5.6升级到5.7之后 子查询里面的order排序无效火锅与理想的博客-CSDN博客
Online DDL
on和where的区别
<驱动表的全部数据> 关联 <被驱动表符合on的数据>
on的条件可以理解为对驱动表无效
【虚拟列】【5.7.8之后】
利用虚拟列解决collate问题
MYSQL UTF8_bin case insensitive unique index - Stack Overflow
利用虚拟列解决5.7的降序索引
- 另外添加一个降序的列
- 利用DATEDIFF函数计算日期差
【隔离级别】不推荐使用RR而使用RC的理由
- RR有间隙锁,产生死锁的概率大
- RR不使用索引会锁表,RC会锁行(MySQL做了优化,不满足就释放行锁)
- 在RC隔离级别下,半一致性读(semi-consistent)特性增加了update操作的并发性!
半一致读:不符合update where条件的行都不加锁。而rr是where条件范围全加锁。
互联网项目中mysql应该选什么事务隔离级别 - 知乎RC半一致性读
innodb_locks_unsafe_for_binlog 参数在 8.0 版本中已被去除(可见,这是一个可能会导致数据不一致的参数,官方也不建议使用了)
RC配合binglog_format=row格式
执行后还有2
- 日志中session1比session2后提交,del在insert之后,就没有2了。
rr的话会间隙锁,insert阻塞,所以rr的statement没问题。rc必须用row。
Mysql8新特性
不再使用查询缓存。
降序索引
create table slowtech.t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc));
提升c1 c2 顺序不一致情况,order by c1,c2 desc;
MySQL 8 新特性之降序索引 - iVictor - 博客园
5.7使用虚拟列加正序索引 倒序索引
函数索引
取消frm文件
SET PERSIST(mysql 8)【设置永久配置】
MySQL :: MySQL 8.0 Reference Manual :: 5.1.9.3 Persisted System Variables
- SET PERSIST语句可以修改内存中变量的值,并且将修改后的值写⼊数据⽬录中的 mysqld-auto.cnf 中。【不修改my.cnf】
- global级别的
窗口函数
SQL优化for update nowait:不等锁直接返回
for update skip locked:跳过被锁的记录
线程池插件
mysql企业版才支持,或者使用Percona mysql(percona的重要区别)
MySQL :: MySQL 5.7 Reference Manual :: 5.5.3.2 Thread Pool Installation
percona线程池
thread_handling = pool-of-threads
mysql - What is the difference between threads connected and threads running - Database Administrators Stack Exchange
参数:
MySQL线程池问题个人整理 - 云+社区 - 腾讯云
有了连接池是否还需要线程池?
怕集群?
java数据库连接池都有哪些配置参数?都在这里了! - SegmentFault 思否
mysqld_safe【systemd提供了相同功能】
- mysqld_safe脚本会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。
MySql 中文文档 - 2.5.10 使用 systemdManagementMySQL 服务器
5.6 升级5.7
单机多实例mysqld_multi
修改字符集(convert to)
ALTER TABLE
table1
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
alter table … convert to ..
注意,这里使用 CONVERT TO 而非 DEFAULT,是因为后者不会修改表中字段的编码和字符集。
使用下面这种不能修改现有数据列的字符集,只对新增列有效。
pager命令
mysql> pager less PAGER set to ‘less’ mysql> show engine innodb status\G
空格下一页
mysql中pager命令的妙用_heizistudio的专栏-CSDN博客