• mysql5.7新特性


    1、innodb存储引擎的增强

    A:Online alter table以及索引

    alter table t rename index t_idx to t_newidx;

     

    Varchar列的大小在线调整的方法:

    Alter table t1 algorithm=inplace,change column c1 c1 varchar(255);

    B:Innodb_buffer_pool online change

    Mysql5.7.5之后在线调整innodb_buffer的大小,引入chunk的概念,每个chunk默认的大小为128M,innodb_buffer_pool_size以chunk为单位进行动态增大和缩小,innodb_buffer_pool_chunk_size。Innodb_buffer_pool_size 的大小是inndb_buffer_pool_chunk_size*innodb_buffer_pool_instances的倍数,如果不是,将适当调大innodb_buffer_pool_size,值从大改小的过程需要释放内存。

    C:Innodb_buffer_pool_dump和load的增强

    通过设置innodb_buffer_pool_dump_pct实现的即dump的百分比,只导出最热的那部分数据的page,当系统繁忙时,可以通过innodb_io_capacity的参数限制buffer pool_load 的过程。

     D:Innodb 临时表优化

    临时表不在记录redo log,mysql 5.7把临时表的数据从系统表空间中抽离出来,形成了自己的独立表空间,并且把临时表的相关索引信息保存在信息表information_schema库下 innodb_temp_table_info表中。

     

    独立表空间文件名ibtmp1,默认12MB。

    E:Page clean的效率提升

    show global variables like '%innodb_page%';

     

    Page cleaner线程不再是只有一个,可以通过新增的参数innodb_page_cleaners 来指定page cleaner线程的数量,提高脏页的刷新效率。

    F:Undo log 自动清除

    启动新增的innodb_undo_log_truncate 参数(默认是关闭状态),设置innodb_undo_log_truncate=1开启。

      当undo log的大小超过innodb_max_undo_log_size参数指定的最大值,undo log 就会自动清除,以防止磁盘空间产生消耗。

    2、其他方面的增强

    A:安全性的增强

    数据库安装初始化,废弃了mysql_install_db命令,改为使用mysqld命令配合--iniialize的方式。Root用户密码不在默认为空,而是随机尝试一个密码,保存在错日志里面。密码记录不再是password字段,而是authentication_string字段。

    默认安装之后的test库没有了,新增super_read_only参数,来禁止超管的写操作权限。增加了账户密码有自动过期策略,密码过期之后需强制进行修改。

     B:Sql_mode的变化

    默认开启严格的sql mode(STRICT_TRANS_TABLES),5.7版本之前默认是no_engine_substitution,启用严格模式下,如果遇到sql书写有问题,就会直接抛出错误,不会出现超长内容自动被截断的现象,而且不能再grant命令中直接创建用户了,需要使用create user命令;

     C:Sys schema功能的增强

    Sys schema是mysql 5.7.7引入的一个系统库,包含了一系列的试图,函数,存储过程。Sys schema的数据来源主要是performance_shcema。其目的就是为了降低查询performance_schema的复杂度。

     D:复制功能的增强

    在复制章节中,我们已经介绍了5.7版本中复制功能的提升,主要分为以下几点:

    并行复制:基于logical-clock(5.7版本引入),一个组内提交的内事物都可以并行,可以达到接近主库并发效果。

    多源复制:

    支持又多个master向一个slave复制。多用于多个服务器备份到单个服务器上。可用于异地灾备,集中备份。

    增强半同步:在mysql5.5半同步复制基础上的增强,在集群架构切换时可以保证数据的一致性。由after_commit模式变成了after_sysnc,提高了复制的效率和数据的可靠性。

    组复制(mgr):有点像Oracle里面的rac集群,可以保证多节点并行写入数据比较类似PXC,目前不是很成熟,不建议使用。

     E:设置查询SQL的超时(max_execution_time)

    5.7.4引入,max_execution_time

    Show full processlist;

    查看正在执行的线程号。

     F:执行计划的增强

    Mysql5.7之前,优化器是性能瓶颈点。5.7之后改善了很多功能。比如in语句子查询优化,mysql5.7的in查询能够使用index range scan 方式,union all 不在产生临时表,新增更多HINTS,并提供HINTS语法。

  • 相关阅读:
    CMake及交叉工具编译链的安装使用
    linux下查询进程占用的内存方法总结
    彻底理解协程
    CMake之Option使用简介
    【C++】C++的工具库
    CMAKE 调用交叉编译器(CMAKE使用)
    Spdlog日志库的使用,支持文件名/行号/函数名的log打印输出
    良好的API接口
    Saga是什么? 分布式事务的挑战
    负负得正
  • 原文地址:https://www.cnblogs.com/hmwh/p/9505838.html
Copyright © 2020-2023  润新知