mysql5.7 InnoDB存储引擎方面的提升有哪些

61次阅读
没有评论

共计 2787 个字符,预计需要花费 7 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 mysql5.7 InnoDB 存储引擎方面的提升有哪些,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

版本:mysql5.7.16

一 : 安全性
    ① 初始化数据库方式的变化
    老版本:   mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/opt/mysql
    mysql5.7 :  mysqld –initialize –user=mysql –basedir=/usr/local/mysql –datadir=/opt/mysql (会生成一个临时密码, 若不想要密码则用参数 –initialize-insecure)
    ② 可以通过 mysql_ssl_ras_setup 来开启 ssl
    ③ sql_mode 由 mysql5.6 的默认空 变为默认 STRICT_TRANS_TABLES

二 : InnoDB 存储引擎方面的提升
    1. 更改索引名不锁表,直接更改
    alter table xxx rename index ix_a to ix_b
    2. Online DDL 对 字段属性为 varchar 更改的改进
    1 varchar(20) — varchar(40) 不锁表直接更改
    2 40 — 20 copy 方法锁表
    3 256 是个临界值,这里指字节,不能跨越 如 varchar(30) — varchar(320),则以 copy 的方式 ddl,锁表
    4 对于 char 和 int 来说还是老方法,即 copy 的算法进行 ddl,锁表
    另:5.1 和 5.5 对于 index 的增删用 algorithm = inplace 方法 不锁表;5.6 支持对于 字段的增删使用 inplace 方法。对于主键的更改仍然使用 copy 算法来实现。
    3.  全文索引对中文的支持
    1 mysql5.6 开始针对于 innodb 才有全文索引,但是不支持 中文,日文,韩文等。
    2 select * from xxx where match(content) against(+horand - 生日快乐 in boolean mode); 表示查找有 horand 没有 生日快乐 的文档。
    3 新增参数 ngram_token_size 用于检索中文单词的个数。与 5.6 设置单词长度的几个参数互斥
    4. BP 预热的改进
    1 mysql5.6 由 i_b_p_dump_at_shutdown=1 和 i_b_p_load_at_startup=1 来实现相关预热功能(mysql 得正常关闭)
    2 mysql5.7 添加参数 i_b_p_dump_pct=xx 来控制 dump 所有热数据的百分比(从头到尾),默认 25,可以在 1~100 之间。mysql5.6 是全部。
    适当降低该值 可以 减少关闭和启动 mysql 的时间
    5. 在线调整 BP
    1 会阻塞用户请求,建议在业务低峰期进行
    6.  回收 undo log 空间
    1 mysql5.6 开始可以指定 undo log 的文件目录(innodb_undo_direcrory),个数(innodb_undo_tablespace) 以及大小 (innodb_undo_logs=128 回滚段数量)
    2 mysql5.7 添加两个参数控制 undo log 的回收 ,innodb_undo_log_truncate=1(开启回收机制),innodb_max_undo_log_size=1G(文件大小超过 1G 触发回收机制)
    7. 通用表空间(开启 innodb_file_per_table=1)
    1 create tablespace ts_name
    2 create table xxx(id int)engine=innodb TABLESPACE ts_name
    3 多个表公用一个 ibd 文件 和 ibdata1 在一个目录下
    8. 独立表空间指定存放路径
    1 5.6 和 5.7 create table t2(id int) DATA DIRECTORY= /tmp 对应的表数据文件 idb 生成一个软连接 连接到 /tmp 目录下
    9. 迁移 某个 innodb 表(开启 innodb_file_per_table=1,mysql5.6 5.7)
    1 FLUSH TABLES xxx for EXPORT
    2 xxx.frm xxx.idb xxx.cfg(存储了数据字典信息,经测试不要也可) 将三个文件 copy 到新数据库下
    3 更改三个文件的属主为 mysql:mysql
    4 alter table xxx discart tablespace
    5 alter table xxx import tablespace
    6 check table xxx;
    10. 直接修改 redo log 的大小
    mysql5.5(ib_logfile0 size 最大支持 4G) 以及之前
    1 set global innodb_fast_shutdown=0
    2 mysqladmin shutdown
    3 修改 innodb_log_file_size 的大小
    4 移除老的 ib_logfile0 ib_logfile1
 5 mysqld_safe 启动 mysql
    mysql5.6 mysql5.7(ib_logfile size 最大提升到几十个 GB)
    1 shutdown
    2 修改配置文件 innodb_log_file_size
    3 mysqld_safe 启动
    11. 死锁打印到错误日志
    1 mysql5.5 以及之前版本
    show engine innodb status\G
    2 mysql5.6 mysql5.7
    设置参数 innodb_print_all_deadlocks=1 将死锁信息打印到 err 日志
    12. 只读事务(5.6 5.7)
    start transaction read only;
三 : SERVER 层提升
    1. Json 字段类型的支持
    2. 支持虚拟列(函数索引)
    1 create table xxx(id int , mod_id int GENERATED Alaways as (( id % 10)) virtual ,key vir_col_inx (mod_id) )engine=innodb;
    2 select * from xxx where mod_id=3; 则可以使用索引 vir_col_inx
    3 插入只能使用 default 方式(insert into xxx values(13,default); )
    3. explain 支持 update/delete/insert
    4. 记录到系统日志
    server 启动时:–syslog 
    client 连接时:–syslog

关于 mysql5.7 InnoDB 存储引擎方面的提升有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-19发表,共计2787字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)