#8性能很好,全内存访问,200W QPS
#查看MySql版本
\s
#账户与安全
-用户的创建和授权
5.7 5.6 一句话 实现 用户的创建 授权语句。 8分开执行。
grant all privileges on *.* to 'guqiang1'@'%' identified by 'Lijin@2022'
select user,host,plugin from mysql.user;
版本8
create user 'guqiang1'@'%' identified;
grant all privileges on *.* to 'guqiang1'@'%';
-认证插件更新
default-authentication-plugin=mysql_native_password 开启
alter user 'guqiang1'@'%' identified with mysql_native_password by 'guqiang@2023'
-密码管理
重复设相同的密码
查看密码相关参数
show variables like 'password%';
password_history | 0 (0:可以修改相同密码;)
alter user 'guqiang1'@'%' identified by 'guqiang@2023'
设置set persist password_history=3;
alter user 'guqiang1'@'%' password history 3;(不能改成与近三次密码相同)
-角色管理
#索引增强
-隐藏索引
不会被优化器使用,不可见索引。会用到?
1、软删除(老版本index删除(误删)、创建 都会有性能,变成隐藏索引 -- 过段时间,彻底删除)
2、灰度发布(线上测试,加隐藏索引、删除)通过一些设置,在查询优化器执行SQL,把索引生效(针对你的测试),发现这个索引没问题,改成正式索引,生产环境生效
创建隐藏索引:create index j_index on t1(j) invisible;
查看隐藏索引:show index from t1\G;
产看系统参数:select @@optimizer_switch\G(use_invisible_indexes=off -> 默认看不见索引)
当前会话设置(测试的时候):set session optimizer_switch='use_invisible_indexes=on';
设置索引可见:alter table t1 alter index j_index visible;(visible:可见;invisible:不可见)
#降序索引
对比之前查询结果不用再重新排序了
#函数索引
对比前面版本添加函数导致索引失效,可以理解为创建索引的时候生成一列函数索引的数据。
#通用表 表达式CTE(common table expression) with
语句:
with recursive xxx_view(id,name) as
(select id, name from table_name where id = ……)
select * from xxx_view order by id;
ps:可以循环执行,不用书写多个union ALL语句
#函数窗口
分析函数、分组、聚合 非常类似
sql语句:
select year, country, product, sum, sum(sum) over (PARTITION BY country) as country_sum from table_name
order by country, year,product, sum;
#普通函数
sum avg max min
#专属函数
- 序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()
- 分布函数:PRCENT_RANK()、CUME_DIST()
- 前后函数:LAG()、LEAD()
- 头尾函数:FIRST_VALUE()、LAST_VALUE()
- 其他函数:NTH_VALUE()、NTILE()
sql示例:
select year, country, product, sum sum(sum) over (PARTITION BY country order by sum rows unbounded preceding) as sum_1 from table_name
order by country,sum;
ps:rows unbounded preceding -> 累计的总和
#原子DDL操作
drop creat alter 要么都执行,要么都不执行。
#JSON增强
#其他
- 自增持久化
自增计数器放入redo log里,解决了长期以来自增字段可能重复的bug。
- 死锁检查控制
增加了一个新的动态变量,用于控制系统是否执行InnoDB死锁检查。对于高并发的系统,禁用死锁检查可能带来性能的提高。
innodb_deadlock_detect
- 锁定语句选项
SELECT ……FOR SHARE和SELECT ……FOR UPDATE中支持NOWAIT、SKIP LOCKED选项。对于NOWAIT,如果请求的行被其他的事务锁定是,语句立即返回。对于SKIP LOCKED,从返回的结果集中移除被锁定的行。
- InnoDB其他改进功能
支持快速DDL,ALTER TABLE ALGORITHM=INSTANT;
InnoDB临时表使用共享的临时表空间ibtmmp1;
新增金泰变量innodb_dedicated_server,自动配置InnoDB内存参数:innodb_buffer_pool_size/innodb_log_file_size等;
默认创建2个UNDO表空间,不在使用系统表空间;
支持ALTER TABLESPACE … RENAME TO 重命名通用表空间。