mysql8.0.11新特性测试

来源:这里教程网 时间:2026-03-01 15:56:05 作者:

一、 数据字典与原子DDL     mysql的所有表结构定义的元数据存放在mysql.idb中。整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储.看下图,我创建了一个 database  business,你会发现表的定义文件*.frm没有了。

    [root @yw -gz -hd -test -211 mysql ] # ls auto .cnf       binlog . index client -cert .pem  ibdata1      mysql               public_key .pem   undo_001 binlog .000001  business      client - key .pem   ib_logfile0  mysql .ibd           server -cert .pem  undo_002 binlog .000002  ca - key .pem    error . log ib_logfile1  performance_schema  server - key .pem   yw -gz -hd -test -211 .pid binlog .000003  ca .pem        ib_buffer_pool   ibtmp1       private_key .pem     sys [root @yw -gz -hd -test -211 mysql ] # ls business / job_execution_log .ibd            t_gw_remit_query .ibd                 t_mer_transfer .ibd job_status_trace_log .ibd         t_gw_remit_serial .ibd                t_sms_gateway .ibd t_bal_sett_report .ibd            t_gw_serial .ibd                      t_sms_recode .ibd t_boss_logger .ibd                t_mail_record .ibd                    t_sms_service .ibd

在执行DDL之类的操作时,很难做到crash-safe,更别说让DDL具备事务性了。

        在MySQL8.0之前,DDL操作在server crash的情况下,会遗留.frm,.ibd文件。MySQL8.0 能实现原?DDL(包括 DROP TABLE, DROP SCHEMA, CREATE TABLE, TRUNCATE TABLE, ALTER TABLE),在server crash的情况下,不会遗留.frm,.ibd临时文件,保证了DDL操作的原子性! 二 、字符集支持(Character set support) 数据库的默认字符集 latin1 到 utf8mb4 。 三、重构sql分析器,提升性能 改进SQL分析器。旧的分析器由于其语法复杂性和自顶向下的分析方式从而有严重的限制,导致难以维护和扩展。 四、onlineDDL 的巨大改进。8.0.12版本将会增加 ALGORITHM=INSTANT 方法。我们知道,mysql的对表结构的更改,一直让DBA头疼。目前有2两种ALGORITHM [=] {INPLACE|COPY} 。instant是比inplace方法更改,锁定表的时间更短。 五、innodb 增强,提升性能 (1)innodb_undo_tablespaces的最小值为2,并且不再允许将innodb_undo_tablespaces设置为0。 最小值2确保回滚段始终在撤消表空间中创建,而不是在系统表空间中创建 (2)InnoDB临时表都将在共享临时表空间ibtmp1中创建 六、调整back_log的默认值,保持和 max_connections一致,增强突发流量带来的连接处理容量。这告诉我们,有些参数是随着另外一个参数动态调整的。 新增innodb_dedicated_server,让InnoDB根据服务器上检测到的内存量自动配置innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method

    原来是:来试验一下:  mysql > select * from `performance_schema` .global_variables where VARIABLE_NAME in ( 'innodb_dedicated_server' , 'innodb_buffer_pool_size' , 'innodb_buffer_pool_instances' ) ; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + | VARIABLE_NAME | VARIABLE_VALUE | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + | innodb_buffer_pool_instances | 1 | | innodb_buffer_pool_size | 134450944 | | innodb_dedicated_server | OFF | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + 3 rows in set (0 .00 sec ) 后来是 mysql > select * from `performance_schema` .global_variables where VARIABLE_NAME in ( 'innodb_dedicated_server' , 'innodb_buffer_pool_size' , 'innodb_buffer_pool_instances' ) ; + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + | VARIABLE_NAME | VARIABLE_VALUE | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + | innodb_buffer_pool_instances | 8 | | innodb_buffer_pool_size | 6442450944 | | innodb_dedicated_server | ON | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + 3 rows in set (0 .00 sec )
七、 在线修改系统变量后,会将修改后的值持久化到磁盘。他并不是持久化到my.cnf中,而且重新生成一个新的文件mysqld-auto.cnf,并将修改后的值保存到该文件中。 mysqld-auto.cnf文件中的配置相比my.cnf文件具有高优先级,如果相同配置出现在两个文件中,就以mysqld-auto.cnf文件中的记录为主。
    mysql > set persist  autocommit =1 ; Query OK , 0 rows affected (0 .00 sec ) mysql >
八、对于开发人员来说,增加了窗口函数,with 语法,对于编写复杂的sql语句提供了强有力的支撑 九、目前为止2018-7-4 ,xtrbackup2.4不支持mysql8的物理备份。 InnoDB性能提升

废除buffer pool mutex,将原来一个mutex拆分成多个,提高并发

MySQL 8.0 版本开始支持期待已久直方图。优化器会利用column_statistics的数据,判断字段的值的分布,得到更准确的执行计划。 这些有很多的关于性能提升的数据,最后,我将用压力测试工具来实际压测一下,看看oracle公司有没有撒谎。

相关推荐