对MySQL 技巧成长比较懂得的同伙肯定知道解决高并发的问题常用的手段就是“拆锁和移除锁”。 MySQL 8.0版本应用多个更细粒度的mutex代替buffer pool mutex这把大年夜锁。
本文大年夜字符集、数据库治理、机能优化、安然等方面为大年夜家汇总介绍 8.0 版本的比较吸惹人的新特点,具体的新的功能 特点还须要去官方文档查看。
因为MySQL采取Server层和插件式存储引擎层的架构模式,在Server层MySQL为每个表创建frm文件来保存表定义相干的元数据信息。
然而部分存储引擎(比如InnoDB)本身也会存储元数据,如许不仅产生了元数据冗余,并且因为Server层和引擎层各自治理表的元数据,在履行DDL类似的操作时,碰到异常情况,体系很难做到crash-safe,DDL操作也做不到原子性。
新的Information Schema定义
MySQL 8.0版本应用视图重构I_S 库中的表,隐蔽了体系表,经由过程萌芽物理表的方法避免了为I_S萌芽创建临时表(临时表的操作包含了server层创建frm, 引擎层获取数据or须要锁保护的全局数据),萌芽机能大年夜幅度晋升。
有兴趣的同伙可以浏览官方团队的文┞仿新的IS体系带来的机能晋升。
- http://mysqlserverteam.com/mysql-8-0-scaling-and-performance-of-information_schema/?spm=5176.100239.blogcont61286.10.f8hlVB
- http://mysqlserverteam.com/mysql-8-0-improvements-to-information_schema/?spm=5176.100239.blogcont61286.9.f8hlVB
角色治理
增长角色role,看到这里Oracle DBA同伙是不是认为似曾了解。角色是一些列权限的集合,可以给某个用户授予和收受接收角色,应用角色可以更便利进行权限治理。参考一个简单的例子:
创建role
- CREATE ROLE 'app_read', 'app_write';
给role赋权
- GRANT SELECT ON app_db.* TO 'app_read';
- GRANT INSERT, UPDATE, DELETE ON app_db.* TO 'app_write';
创建用户
- CREATE USER 'ro_user'@'localhost' IDENTIFIED BY 'read_user1pass';
- CREATE USER 'rw_user'@'localhost' IDENTIFIED BY 'rw_user1pass';
给用户付铀浇猾
- GRANT 'app_read' TO 'ro_user'@'localhost';
- GRANT 'app_read','app_write' TO 'rw_user'@'localhost'; ##将两种角色的权限付与账号
说点本身的关于role的设法主意,对于精细化治理的MySQL运维体系会基于营业来区分权限,role的用处可能用处不大年夜。然则对于很多库混淆在一路的实例场景,又有不合的开辟同窗须要申请小我账户拜访db,可以经由过程role类保护权限分派。
设备文件
MySQL 8.0版本支撑在线修改全局参数持久化,经由过程加上PERSIST关键字,可以将调保持久化到新的设备文件中,再次重启db还可以应用到最新的参数。对于加上 PERSIST 关键字修改参数敕令,MySQL体系会生成一个包含json格局数据的 mysqld-auto.cnf 文件,比如履行:
推荐阅读
【编辑推荐】机械进修是否真的合适你的营业?毕生机械进修:一种可持续进修典范式大年夜概念到案例:初学者须知的十大年夜机械进修算法安然人寿谢佳标:应用Microsoft R Server对大年夜数>>>详细阅读
地址:http://www.17bianji.com/lsqh/38368.html
1/2 1