站长网 MySql教程 MySQL 5.7 新特征是什么

MySQL 5.7 新特征是什么

小编给大家分享一下MySQL 5.7 新特性是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 我们自豪的宣布 MySQL 5.7 稳定版开放下载了。 MySQL 5.7.9 是目前世界上最流行开源数据库的一令人兴奋的新版本, 比 MySQL 5.6 快 3 倍,同时

小编给大家分享一下MySQL 5.7 新特性是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
 
我们自豪的宣布 MySQL 5.7 稳定版开放下载了。 MySQL 5.7.9 是目前世界上最流行开源数据库的一令人兴奋的新版本, 比 MySQL 5.6 快 3 倍,同时还提高了可用性,可管理性和安全性。一些重要的增强功能如下:
 
性能和可扩展性:改进 InnoDB 的可扩展性和临时表的性能,从而实现更快的网络和大数据加载等操作。
JSON支持:使用 MySQL 的 JSON      功能,你可以结合 NoSQL 的灵活和关系数据库的强大。
改进复制 以提高可用性的性能。包括多源复制,多从线程增强,在线      GTIDs,和增强的半同步复制。
性能模式 提供更好的视角。我们增加了许多新的监控功能,以减少空间和过载,使用新的      SYS 模式显著提高易用性。
安全: 我们贯彻“安全第一”的要求,许多 MySQL 5.7      新功能帮助用户保证他们数据库的安全。
优化: 我们重写了大部分解析器,优化器和成本模型。这提高了可维护性,可扩展性和性能。
GIS: MySQL 5.7 全新的功能,包括 InnoDB      空间索引,使用 Boost.Geometry,同时提高完整性和标准符合性。
       
InnoDB enhancements.
 
VARCHAR 大小可通过 ALTER TABLE语句进行原地(in place)修改,而无需table-copy。如:ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);但存在限制,即只支持0~255字节内的或者255以上字节间的增加,也就是说若从254增到256时不能使用INPLACE算法,必须使用COPY算法,否侧报错.这是因为0~255内的VARCHAR值需要一个额外的字节来编码,而256以上的VARCHAR值需要两个字节来编码。另外使用INPLACE算法缩小VARCHAR的ALTER TABLE也是不支持的,必须用COPY算法。
 
InnoDB临时表的DDL性能提升。
 
InnoDB临时表元数据不再存储于InnoDB系统表而是存储在INNODB_TEMP_TABLE_INFO,包含所有用户和系统创建的临时表信息。该表在第一次在其上运行select时被创建。
 
InnoDB现在支持MySQL-supported空间数据类型。也即,之前的空间数据是以binary BLOB数据存储的,现在空间数据类型被映射到了一个InnoDB内部数据类型DATA_GEOMETRY.
 
对于non-compressed InnoDB临时表有独立的表空间,表空间在每次服务器重启时于默认的DATADIR中被重建,可通过innodb_temp_data_file_path选项指定其他路径。
 
innochecksum (离线的InnoDB文件校验工具),新增新的选择项或扩展的功能,如,可指定特定的校验算法、可以只重写校验值而不进行验证、可指定允许的校验和不匹配量、显示各类页的个数、导出页类型信息、输出至日志、从标准输入读取数据等。目前可支持超过2G的文件。(http://dev.mysql.com/doc/refman/5.7/en/innochecksum.html)
 
针对临时表及相关对象引入新的“non-redo” undo log,存放于临时表空间。该类型的undo log非 redolog 因为临时表不需崩溃恢复、也就无需redo logs,但却需要 undo log用于回滚、MVCC等。默认的临时表空间文件为ibtmp1,位于数据目录在每次服务器启动时被重新创建,可通过innodb_temp_data_file_path指定临时表空间。(http://dev.mysql.com/doc/refman/5.7/en/innodb-temporary-table-undo-logs.html)
 
可通过innodb_buffer_pool_dump_pct调整buffer pool中最近使用的页读取并dump的百分比。当有其他InnoDB后台任务所引起的I/O活动时,可通过 innodb_io_capacity 限制各I/O活动包括 buffer pool load 操作的频次。
 
InnoDB支持full-text parser 插件(http://dev.mysql.com/doc/refman/5.7/en/full-text-plugins.html)
 
支持多page cleaner线程从buffer pool中刷脏页,通过 innodb_page_cleaners配置线程数,默认值为1.
 
支持使用INPLACE算法的online DDL语句重建普通表和分区表:OPTIMIZE TABLE、ALTER TABLE … FORCE、ALTER TABLE … ENGINE=INNODB。
 
Linux系统中Fusion-io Non-Volatile Memory (NVM)文件系统提供了原子写能力,使InnoDB双写变得冗余。因此,MySQL5.7.4以后,对于支持原子写的Fusion-io设备上的系统表空间InnoDB doublewrite buffer会自动关闭。
 
对于分区表和独立的InnoDB表分区从MySQL5.7.4开始支持“可传输”表空间,使得分区表的备份步骤更加容易也使得在不同MySQl实例间拷贝分区表和独立的表分许成为可能。(http://dev.mysql.com/doc/refman/5.7/en/tablespace-copying.html)
 
可通过 innodb_buffer_pool_size 参数动态调整buffer pool大小,resize以chunk为单位,chunk大小通过 innodb_buffer_pool_chunk_size配置,另可通过Innodb_buffer_pool_resize_status 状态变量观察调整过程。(http://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-online-resize.html)
 
MySQL5.7.5开始Multi-threaded page clean也在shutdown和recover阶段被支持。
 
MySQL5.7.5后支持空间数据类型上建索引。且可通过 ALTER TABLE … ADD SPATIAL INDEX ALGORITHM=INPLACE进行在线操作。
 
创建和重建索引时支持bulk load,该方法被称为“sorted index build”,提升了索引创建效率,支持全文索引但不支持空间索引。可通过innodb_fill_factor定义每个页的填充因子,剩余的空间用于将来的索引增长。(http://dev.mysql.com/doc/refman/5.7/en/sorted-index-builds.html)
 
使用新的日志记录类型(MLOG_FILE_NAME)来识别上一个检查点以来发生变化的表空间。这简化了崩溃恢复时的表空间发现,消除了redo log应用之前的文件系统扫描。 (http://dev.mysql.com/doc/refman/5.7/en/innodb-recovery-tablespace-discovery.html).需要注意的是这一行为导致了redo log格式的变化,所以升级至MySQL5.7.5或者从改版本降级时需完全关闭MySQL。
 
可通过配置 innodb_undo_log_truncate来truncate undo表空间中的undo logs。系统表空间内的undo logs不会被truncate。(默认情况下undo log存储于系统表空间,可通过innodb_undo_directory、 innodb_undo_logs、 innodb_undo_tablespaces进行调整。http://dev.mysql.com/doc/refman/5.7/en/truncate-undo-tablespace.html )
 
支持本地化分区(native partitioning),之前需依赖ha_partition handler为每个分区创建handler对象,现在只需一个partition-aware handler对象,节约了内存。(可通过mysql_upgrade或者ALTER TABLE … UPGRADE PARTITIONING将老方法建的分区表升级为新的)。
 
支持使用CREATE TABLESPACE语句创建通用表空间。并可以通过 CREATE TABLE tbl_name … TABLESPACE [=] tablespace_name 或者 ALTER TABLE tbl_name TABLESPACE [=] tablespace_name将表添加到创建的通用表空间。(http://dev.mysql.com/doc/refman/5.7/en/general-tablespaces.html)
 
可通过 innodb_default_row_format指定InnoDB表的默认行格式,新版本的默认值有COMPACT替换为了DYNAMIC 。
 
移除特性
 
对pre-4.1版本的密码hash格式的支持被移除,相关联的,old_passwords系统变量、 OLD_PASSWORD()函数被移除,mysql_old_password认证插件被移除,–secure-auth选项无效且将在后续版本移除、 secure_auth 变量值允许为1,–skip-secure-auth被移除。
 
YEAR(2)不再被支持,请使用YEAR(4).
 
innodb_mirrored_log_groups被移除。
 
使用default_storage_engine代替storage_engine。
 
thread_concurrency、timed_mutexes 系统变量。
 
ALTER TABLE的IGNORE从句。
 
INSERT DELAYED 、 REPLACE DELAYED 中的DELAYED会被忽略,相关联的mysqldump中的–delayed-insert 选项被移除,performance_schema.table_lock_waits_summary_by_table中相关列被移除,mysqlbinlog不再为INSERT DELAYED注解。
 
Windows系统中使用.sys文件的Database symlinking被移除而使用支持native symlink 的mylink。(http://dev.mysql.com/doc/refman/5.7/en/windows-symbolic-links.html)
 
mysql_upgrade中的–basedir, –datadir 和–tmpdir 选项。
 
选项前缀不再被支持,只支持使用选项全名,比如要用–key-buffer-size而不能用–key-buffer,还有–skip-grant-tables与–skip-grant等。
 
SHOW ENGINE INNODB MUTEX输出被移除,可通过Performance Schema表上创建视图获取相关信息。
 
InnoDB表空间监控和InnoDB表监控被移除。表监控信息可通过INFORMATION_SCHEMA表获取。
 
用于启用和禁用InnoDB Monitor以及InnoDB Lock Monitor的特殊命名的表被移除,由 innodb_status_output和innodb_status_output_locks两个动态的系统变量取代.(http://dev.mysql.com/doc/refman/5.7/en/innodb-monitors.html)
 
innodb_use_sys_malloc 和 innodb_additional_mem_pool_size 系统变量移除。
 
msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, mysql_waitpid, mysql_zap, mysqlaccess和mysqlbug 移除。
 
mysqlhotcopy被移除,可以使用mysqldump和 MySQL Enterprise Backup或者一些开源工具。
 
binary-configure.sh脚本被移除。
 
INNODB_PAGE_ATOMIC_REF_COUNT CMake选项被移除
 
innodb_create_intrinsic选项、 innodb_optimize_point_storage 、innodb_log_checksum_algorithm 选项被移除。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/1223/42330.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部