当前位置: 首页 > 科技观察

一篇了解MYSQL8vsMYSQL5.7新增功能的文章

时间:2023-03-13 12:41:06 科技观察

概述最近有一些项目要加入Mysql8.0,所以我从官方整理一下mysql8相比mysql5.7新增的一些功能网站,仅供参考。1.新的系统字典表集成了存储数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎存储。2.安全和用户管理添加caching_sha2_password认证插件,默认认证插件。在性能和安全方面,增强的权限支持作用。新增密码历史记录功能,限制旧密码重复使用。三、Innodbenhancement添加INFORMATION_SCHEMA.INNODB_CACHED_INDEXES以查看每个索引在InnoDB缓冲池中缓存的索引页数。InnoDB临时表将被保存。在共享临时表空间ibtmp1中创建对于SELECT...FORSHARE和SELECT...FORUPDATE语句,InnoDB支持NOWAIT和SKIPLOCKED,innodb_undo_tablespaces的最小值为2,并且不再允许将innodb_undo_tablespaces设置为0。最小值2确保回滚段总是在undo表空间创建,而不是在系统表空间支持ALTERTABLESPACE...RENAMETO语法新增INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF视图新增动态配置项innodb_deadlock_detect禁用死锁锁检查,因为在高并发系统中,当大量线程等待同一个锁时,死锁检查会大大降低数据库速度支持在服务器离线时使用innodb_directories选项将表空间文件移动或恢复到新位置添加了innodb_dedicated_server,让InnoDB根据服务器上检测到的内存量自动配置innodb_buffer_pool_size、innodb_log_file_size、innodb_flush_method。当启用innodb_dedicated_server时,InnoDB会根据服务器上检测到的内存量自动配置以下选项:innodb_dedicated_server:自动配置缓冲池的大小4、MySQL8.0更好地支持文档数据库和JSON不可见索引,并开始支持不可见指标。在优化SQL的过程中,可以将索引设置为不可见。优化器不会使用不可见索引来支持降序索引。您可以为索引定义DESC。之前可以倒序扫描索引,但是影响性能,降序索引可以高效完成支持。对正则表达式增强了RANK()、LAG()、NTILE()等函数,增加了REGEXP_LIKE()、EGEXP_INSTR()、REGEXP_REPLACE()、REGEXP_SUBSTR()等函数,用于添加备份锁,在线备份期间允许DML,同时防止可能导致快照不一致的操作。LOCKINSTANCEFORBACKUP和UNLOCKINSTANCE语法支持备份锁。默认字符集从latin1更改为utf8mb4。第五,增强了配置文件。MySQL8.0版本支持在线修改全局参数持久化。通过添加PERSIST关键字,可以将调整持久化到新的配置文件中,再次重启db也可以应用到最新的参数。对于带有PERSIST关键字修改参数的命令,MySQL系统会生成一个mysqld-auto.cnf文件,其中包含json格式的数据,例如执行:setPERSISTbinlog_expire_logs_seconds=604800;#内存和json文件都被修改,重启生效setGLOBALbinlog_expire_logs_seconds=604800;#只修改内存,重启丢系统会在data目录下生成一个mysqld-auto.cnf文件,内容如下:{"mysql_server":{"binlog_expire_logs_seconds":"604800"}}Whenmy.cnfandWhenmysqld-auto.cnf同时存在,后者优先级高。六、直方图MySQL8.0版本开始支持期待已久的直方图。优化器会利用column_statistics的数据来判断字段值的分布,得到更准确的执行计划。可以使用ANALYZETABLEtable_name[UPDATEHISTOGRAMoncol_namewithNBUCKETS|DROPHISTOGRAMONclo_name]收集或删除直方图信息,支持session级SET_VAR动态调整部分参数,有利于提高语句性能。参考select/*+SET_VAR(sort_buffer_size=16M)*/idfromtestorderid;insert/*+SET_VAR(foreign_key_checks=OFF)*/intotest(name)values(1);7.InnoDB性能提升废除了bufferpoolmutex,将原来的mutex拆分成多个,提高并发性拆分了LOCK_thd_list和LOCK_thd_remove这两个mutex,可以提高线程链接效率5%左右。1.行缓冲区MySQL8.0的优化器可以估计要读取的行数,因此可以为存储引擎提供一个合适大小的行缓冲区来存储所需的数据。大批量连续数据扫描的性能将受益于更大的记录缓冲区。2、提升扫描性能提升InnoDB范围查询性能,可提升全表查询和范围查询性能5-20%。3.成本模型InnoDBbuffer可以估计缓存中有多少表和索引,这使得优化器在选择访问方式时可以知道数据是可以存储在内存中还是必须存储在磁盘上。

最新推荐
猜你喜欢