日志结尾
前面我们聊了mysql的undo日志,redo日志,binlog等等,也从一条update语句来分析了一下日志的执行思路以及版本控制是怎么回事,四大特性是怎么实现的等等
今天我们来说说最后一个错误日志
其实用处不大 因为对我们开发人员来说基本上是没有权限来查看错误日志的
一般是由我们的DBA来查看的
还有一个就是通用日志
这里会将所有的操作都记录下来
比如说某个用户出现了重复支付的问题,这里程序员就得根据这个来排查
或者锁是一些疑难的问题也可以通过这个来查询
我们需要将参数设置为on才能打开通用查询日志
mysql8.0新特性
mysql的简单优化就已经告一段落了,下面我们来谈谈8.0版本的优化点
首先是一个优化手段以及其效果
下面我们介绍一些系统参数
这个就是服务器在同一时间最多允许多少条连接数
允许多少用户连接 剩下多余的连接数是给DBA来管理的
下面是一些超时时间的设置参数
新增降序索引
5.7对应的降序索引设置之后还是走的是普通索引
虽然支持这样的语法但是并没有得到对应的实现
对于8.0的实现优化了这一点
在使用c1正排c2倒排用到了降序索引
------------------------------------------------------------------------------------------------------------------------
5.7如果使用分组group by关键字 会按照分组的顺序升序排列
而使用8.0则不会按照字段排序
------------------------------------------------------------------------------------------------------------------------
8.0新增隐藏索引
可以是你不确定这个索引有没有人使用了,让mysql的执行引擎默认无视这个索引
主要使用一个invisible的关键字
这里的索引是真实存在的,在mysql的内部也是会真实维护一样的索引结构的
但是类似于软删除 不让看到
等到确实没有使用的时候再彻底删除
可以使用这个语句查看各种参数
或者还有一种优化手段就是先建立隐藏索引
临时使用一次看看优化器会不会走这个索引,如果使用到这个索引
那么我们再进行对应的设置全局参数
有点类似于灰度发布的感觉
------------------------------------------------------------------------------------------------------------------------
函数索引
我们知道mysql最好在where的时候不要使用函数
这是因为这样走不了索引
详情还是参考对应的索引树
但是比如我们想实现登录大小写不区分就没办法走索引了
这时候就用到了函数索引
实际上也是将函数的结果重新加了一层索引
我们知道因为8.0所有的系统表都替换成了innodb存储引擎
所以才能实现对应的一些特性
这里下面我们介绍一下对应的 for update
实际上是一个排他锁
我们在启动一个事务查询这里就会出现问题
锁住了执行不了
但是8.0有一个nowait可以直接返回而无需阻塞
或者使用for share 共享锁也是可以的
------------------------------------------------------------------------------------------------------------------------
新增Innodb自适应参数
就是可以根据对应的服务器检测的内存大小来自适应的选择更适合的buffered_pool的大小等参数能尽可能多的占据对应的可占用的资源来达成相对来说最好的效率
注:使用这个参数的时候最好是MySQL单独的服务器,否则会造成比如说redis的服务无法运行等操作
-----------------------------------------------------------------------------------------------------------------------
死锁检测参数
建议开启但是在需要高并发的情况下可以酌情去关闭对应的参数以提高性能
-----------------------------------------------------------------------------------------------------------------------
8.0之后的undoLog已经不放在ibd文件中了
而是放在了对应的单独文件中了
对应也是有自增主键的bug修复
在5.7的版本中假设我现在有3条数据
1 2 3
这里我将1的数据改成5了
然后添加后面的数据就会出现bug
8.0之后是增加到了redolog中
对应的update语句也会有感应
-----------------------------------------------------------------------------------------------------------------------
MySQL窗口函数
也叫分析函数
这里实际上是对group by语句的一个优化
后面的操作使用分区就能实现group by 的功能了
这里的over实际上就是对聚合函数的条件
实际上是类似于group by 操作的