加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL8.0有什么新特性

发布时间:2022-01-19 13:27:59 所属栏目:MySql教程 来源:互联网
导读:本篇内容介绍了MySQL8.0有什么新特性的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 一、MySQL 8.0中添加的功能 1、新的系统字典表 整合了存储有关数
       本篇内容介绍了“MySQL8.0有什么新特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
 
一、MySQL 8.0中添加的功能
 
1、新的系统字典表
 
    整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储
 
2、支持DDL 原子操作
 
    InnoDB表的DDL支持事务完整性,要么成功要么回滚,将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作
 
3、安全和用户管理
 
新增caching_sha2_password认证插件,并且是默认的身份认证插件。性能和安全方面加强
权限支持role
新增密码历史记录功能,限制重复使用以前的密码
4、支持资源管理
 
    支持创建和管理资源组,并允许将服务器运行的线程分配给特定的组,以便线程根据资源组可用的资源执行
 
5、innodb 增强
 
自增列优化,修复MySQL的bug#199,该bug导致在DB重启时,MySQL会将表上最大的自增值作为最大值,下次分配是分配max(id)+1,如果是归档表或者其它模式删除数据后,DB系统重启,自增值可能被重用
新增INFORMATION_SCHEMA.INNODB_CACHED_INDEXES,查看每个索引缓存在InnoDB缓冲池中的索引页数
InnoDB临时表都将在共享临时表空间ibtmp1中创建
对于SELECT ... FOR SHARE和SELECT ... FOR UPDATE语句,InnoDB支持NOWAIT和SKIP LOCKED
innodb_undo_tablespaces的最小值为2,并且不再允许将innodb_undo_tablespaces设置为0。 最小值2确保回滚段始终在撤消表空间中创建,而不是在系统表空间中创建
支持 ALTER TABLESPACE ... RENAME TO 语法
新增innodb_dedicated_server,让InnoDB根据服务器上检测到的内存量自动配置innodb_buffer_pool_size,innodb_log_file_size,innodb_flush_method
新增INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF视图
新增了动态配置项 innodb_deadlock_detect,用来禁用死锁检查,因为在高并发系统中,当大量线程等待同一个锁时,死锁检查会大大拖慢数据库
支持使用innodb_directories选项在服务器脱机时将表空间文件移动或恢复到新位置
6、MySQL 8.0更好支持文档型数据库和JSON
 
7、优化
 
不可见索引,开始支持invisible index,(感觉又和Oracle一样了),在优化SQL的过程中可以设置索引为不可见,优化器变不会利用不可见索引
支持降序索引,可以对索引定义 DESC,之前,索引可以被反序扫描,但影响性能,而降序索引就可以高效的完成
8、支持RANK(), LAG()、NTILE()等函数
 
9、正则表达式增强,提供了REGEXP_LIKE(),EGEXP_INSTR(), REGEXP_REPLACE(), REGEXP_SUBSTR()等函数  
 
10、新增备份锁,允许在线备份期间的DML,同时防止可能导致快照不一致的操作。 备份锁由LOCK INSTANCE FOR BACKUP和UNLOCK INSTANCE语法支持
 
11、字符集  默认字符集由latin1变为utf8mb4
 
12、配置文件增强
 
MySQL 8.0版本支持在线修改全局参数持久化,通过加上PERSIST关键字,可以将调整持久化到新的配置文件中,再次重启db还可以应用到最新的参数。对于加上 PERSIST 关键字修改参数命令,MySQL系统会生成一个包含json格式数据的 mysqld-auto.cnf 文件,比如执行:
 
    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
 
“MySQL8.0有什么新特性”的内容就介绍到这里了,感谢大家的阅读。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读