时间:2021-07-01 10:21:17 帮助过:23人阅读
set PERSIST expire_logs_days=10 ; #内存和json文件都修改,重启还生效
set GLOBAL expire_logs_days=10 ; #只修改内存,重启丢失
系统会在数据目录下生成一个包含如下内容的 mysqld-auto.cnf 的文件:
{ "mysql_server": {"expire_logs_days": "10" } }
当 my.cnf 和 mysqld-auto.cnf 同时存在时,后者具有高优先级。
13、直方图
MySQL 8.0 版本开始支持期待已久直方图。优化器会利用column_statistics的数据,判断字段的值的分布,得到更准确的执行计划。
可以使用 ANALYZE TABLE table_name [UPDATE HISTOGRAM on col_name with N BUCKETS |DROP HISTOGRAM ON clo_name] 来收集或者删除直方图信息
14、支持会话级别SET_VAR 动态调整部分参数,有利于提升语句性能。
select /*+ SET_VAR(sort_buffer_size = 16M) */ id from test order id ;
insert /*+ SET_VAR(foreign_key_checks=OFF) */ into test(name) values(1);
15、默认参数的调整
调整back_log的默认值,保持和 max_connections一致,增强突发流量带来的连接处理容量。
修改 event_scheduler 默认为ON,之前默认是关闭的。
调整max_allowed_packet 的默认值,从4M增加到64M。
调整bin_log,log_slave_updates默认值为on。
调整expire_logs_days的过期时间为30天,老版本是7天,生产环境时,检查该参数,防止binlog过多造成空间紧张。
调整innodb_undo_log_truncate 默认为ON
调整innodb_undo_tablespaces 默认值为2
调整innodb_max_dirty_pages_pct_lwm 默认值10
调整innodb_max_dirty_pages_pct默认值为90
新增innodb_autoinc_lock_mode 默认值为2
16、InnoDB性能提升
废除buffer pool mutex,将原来一个mutex拆分成多个,提高并发
拆分LOCK_thd_list 和 LOCK_thd_remove 这两个mutex,大约可提高线程链接效率5%。
17、行缓存
MySQL8.0的优化器可以估算将要读取的行数,因此可以提供给存储引擎一个合适大小的row buffer来存储需要的数据。大批量的连续数据扫描的性能将受益于更大的record buffer
18、改进扫描性能
改进InnoDB范围查询的性能,可提升全表查询和范围查询 5-20%的性能。
19、成本模型
InnoDB缓冲区可以估算缓存区中的有多少表和索引,这可以让优化器选择访问方式时知道数据是否可以存储在内存中还是必须存储到磁盘上。
20、重构SQL分析器
改进SQL分析器。旧的分析器由于其语法复杂性和自顶向下的分析方式从而有严重的限制,导致难以维护和扩展。
二、MySQL8.0中被废弃的特性
废弃validate_password 插件
废弃ALTER TABLESPACE和DROP TABLESPACE ENGINE子句
废弃JSON_MERGE() -> JSON_MERGE_PRESERVE()取代
废弃 have_query_cache 系统变量
三、MySQL8.0被移除的功能
query cache 功能被移除,相关的系统变量也被移除
mysql_install_db 被 mysqld --initialize or --initialize-insecure 替代
INFORMATION_SCHEMA下的INNODB_LOCKS和INNODB_LOCK_WAITS表已被删除。 用Performance Schema data_locks和data_lock_waits表替代
INFORMATION_SCHEMA下的四张表移除:GLOBAL_VARIABLES, SESSION_VARIABLES, GLOBAL_STATUS, SESSION_STATUS
InnoDB不再支持压缩的临时表。
不再支持 PROCEDURE ANALYSE()语法
Renamed InnoDB Information Schema Views
Old Name New Name
INNODB_SYS_COLUMNS INNODB_COLUMNS
INNODB_SYS_DATAFILES INNODB_DATAFILES
INNODB_SYS_FIELDS INNODB_FIELDS
INNODB_SYS_FOREIGN INNODB_FOREIGN
INNODB_SYS_FOREIGN_COLS INNODB_FOREIGN_COLS
INNODB_SYS_INDEXES INNODB_INDEXES
INNODB_SYS_TABLES INNODB_TABLES
INNODB_SYS_TABLESPACES INNODB_TABLESPACES
INNODB_SYS_TABLESTATS INNODB_TABLESTATS
INNODB_SYS_VIRTUAL INNODB_VIRTUAL
remove的server选项:
--temp-pool
--ignore-builtin-innodb
--des-key-file
--log-warnings
--ignore-db-dir
remove的配置选项:
innodb_file_format
innodb_file_format_check
innodb_file_format_max
innodb_large_prefix
remove的系统变量
information_schema_stats ->information_schema_stats_expiry
ignore_builtin_innodb
innodb_support_xa
show_compatibility_56
have_crypt
date_format
datetime_format
time_format
max_tmp_tables
global.sql_log_bin(session.sql_log_bin保留)
log_warnings ->log_error_verbosity
multi_range_count
secure_auth
sync_frm
tx_isolation -> transaction_isolation
tx_read_only -> transaction_read_only
ignore_db_dirs
query_cache_limit
query_cache_min_res_unit
query_cache_size
query_cache_type
query_cache_wlock_invalidate
innodb_undo_logs -->innodb_rollback_segments
remove的状态变量
Com_alter_db_upgrade
Slave_heartbeat_period
Slave_last_heartbeat
Slave_received_heartbeats
Slave_retried_transactions, Slave_running
Qcache_free_blocks
Qcache_free_memory
Qcache_hits
Qcache_inserts
Qcache_lowmem_prunes
Qcache_not_cached
Qcache_queries_in_cache
Qcache_total_blocks
Innodb_available_undo_logs status
remove的函数
JSON_APPEND() --> JSON_ARRAY_APPEND()
ENCODE()
DECODE()
DES_ENCRYPT()
DES_DECRYPT()
remove的client选项:
--ssl --ssl-verify-server-cert 被删除,用--ssl-mode=VERIFY_IDENTITY |REQUIRED |DISABLED 替代
--secure-auth
参考:https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html#mysql-nutshell-additions
MySQL 8.0新特性
标签:MySQL8.0新特性