您可以在表上创建FULLTEXT索引
,并使用
语法InnoDB查询它们。MATCH() ... AGAINST此功能包括一个新的邻近搜索运算符 ( @) 和几个新的配置选项和
INFORMATION_SCHEMA表:有关更多信息,请参阅
第 14.6.2.3 节,“InnoDB 全文索引”。
ALTER TABLE
可以在不复制表、不阻塞对表的插入、更新和删除或两者的情况下执行
多个操作。这些增强功能统称为在线 DDL。有关详细信息,请参阅第 14.13 节,“InnoDB 和在线 DDL”。
InnoDB现在支持语句的
子句,它允许在数据目录之外创建表。此增强功能提供了在更适合您的服务器环境的位置创建表的灵活性。例如,您可以将繁忙的表放在SSD
设备上,或将大表放在大容量
HDD设备上。
DATA
DIRECTORY='directory'CREATE
TABLE
有关详细信息,请参阅
第 14.6.1.2 节,“在外部创建表”。
InnoDB现在支持
“可传输表空间”的概念,允许
每个表的文件表
空间(.ibd文件)从一个正在运行的 MySQL 实例中导出并导入到另一个正在运行的实例中,而不会因缓冲数据、正在进行的事务和内部数据而导致不一致或不匹配簿记详细信息,例如空间 ID和
LSN。
该命令的FOR EXPORT子句
FLUSH
TABLE将任何未保存的更改从
InnoDB内存缓冲区
写入.ibd文件。.ibd将文件和一个单独的元数据文件复制
到另一台服务器后,语句的DISCARD
TABLESPACEandIMPORT
TABLESPACE子句
ALTER TABLE用于将表数据带入不同的 MySQL 实例。
此增强功能提供了移动驻留在
file-per-table 表空间中的表的灵活性,
以更好地适应您的服务器环境。例如,您可以将繁忙的表移动到SSD设备,或将大表移动到大容量
HDD设备。有关详细信息,请参阅第 14.6.1.3 节,“导入 InnoDB 表”。
您现在可以将未压缩表的InnoDB
页面大小设置为 8KB 或 4KB,以替代默认的 16KB。此设置由
innodb_page_size
配置选项控制。您在创建 MySQL 实例时指定大小。
一个实例中的所有InnoDB
表空间共享相同的页面大小。较小的页面大小有助于避免某些工作负载和存储设备组合的冗余或低效 I/O,尤其是
块大小较小的SSD设备。
自适应刷新
算法的改进
使 I/O 操作在各种
工作负载下更加高效和一致。新算法和默认配置值有望为大多数用户提高性能和并发性。高级用户可以通过几个配置选项微调他们的 I/O 响应能力。有关详细信息,请参阅
第 14.8.3.4 节,“配置缓冲池刷新”。
您可以编写
InnoDB通过 NoSQL 风格的 API 访问表的 MySQL 应用程序。此功能使用流行的
memcached守护进程来中继诸如ADD、SET和GET键值对之类的请求。这些存储和检索数据的简单操作避免了 SQL 开销,例如解析和构建
查询执行计划. 您可以通过 NoSQL API 和 SQL 访问相同的数据。例如,您可以使用 NoSQL API 进行快速更新和查找,使用 SQL 进行复杂查询并与现有应用程序兼容。有关详细信息,请参阅第 14.20 节,“InnoDB memcached 插件”。
表的优化器统计信息InnoDB
以更可预测的时间间隔收集,并且可以在服务器重新启动后保持不变,以提高
计划的稳定性。您还可以控制对InnoDB索引进行的采样量,以使优化器统计信息更加准确并改进查询执行计划。有关详细信息,请参阅
第 14.8.11.1 节,“配置持久优化器统计参数”。
新的优化适用于只读
事务,提高了临时查询和报告生成应用程序的性能和并发性。这些优化会在可行时自动应用,或者您可以指定START
TRANSACTION READ ONLY以确保事务是只读的。有关详细信息,请参阅
第 8.5.3 节,“优化 InnoDB 只读事务”。
您可以将InnoDB
撤消日志从
系统表空间移出到一个或多个单独
的表空间中。撤消日志的 I/O 模式使这些新表空间成为迁移到 SSD 存储的良好候选者,同时将系统表空间保留在硬盘存储上。有关详细信息,请参阅第 14.6.3.3 节,“撤消表空间”。
InnoDB您可以通过指定配置选项
来提高校验和功能的效率
innodb_checksum_algorithm=crc32,这会打开更快的校验和算法。此选项替换innodb_checksums选项。使用旧校验和算法(选项值innodb)写入的数据完全向上兼容;使用新校验和算法(选项值
crc32)修改的表空间不能降级到不支持该
innodb_checksum_algorithm选项的早期版本的 MySQL。
InnoDB
重做日志文件
的最大组合大小从 4GB 增加到 512GB。innodb_log_file_size
您可以通过该选项指定较大的值
。innodb_log_file_size启动行为现在会自动处理现有重做日志文件的大小与 和
指定的大小不匹配的情况
innodb_log_files_in_group。
该--innodb-read-only
选项允许您以只读模式运行 MySQL 服务器。您可以访问InnoDB只读介质(如 DVD 或 CD)上的表,或者设置一个包含多个实例的数据仓库,这些实例都共享同一个数据目录。有关使用详细信息,请参阅
第 14.8.2 节,“为只读操作配置 InnoDB”。
新的配置选项
允许您从熟悉的 0-9 范围内为压缩表
innodb_compression_level选择
压缩
级别。您还可以控制当更新操作导致页面再次被压缩时,缓冲池中的压缩页面是否存储在重做日志中。此行为由
配置选项控制。
InnoDBzlibinnodb_log_compressed_pages
InnoDB
压缩表中的
数据块包含一定量的空白空间(填充)以允许DML在不重新压缩新值的情况下修改行数据的操作。过多的填充会增加压缩失败的可能性,当数据在大量更改后确实需要重新压缩时,需要进行页面拆分。现在可以动态调整填充量,这样 DBA 就可以降低压缩失败率,而无需使用新参数重新创建整个表,或者使用不同的页面大小重新创建整个实例。相关的新配置选项是
innodb_compression_failure_threshold_pct,
innodb_compression_pad_pct_max。
几个新的InnoDB相关
INFORMATION_SCHEMA表提供了有关InnoDB缓冲池的信息、有关表的元数据、索引和InnoDB数据字典中的外键,以及有关性能指标的低级信息,这些信息补充了 Performance Schema 表中的信息。
为了减轻具有大量表的系统上的内存负载,InnoDB现在使用 LRU 算法释放与打开的表关联的内存,以选择未访问时间最长的表。要为打开的表保留更多内存来保存元数据InnoDB,请增加
table_definition_cache
配置选项的值。InnoDB将此值视为
数据字典缓存中打开表实例数的“软限制” 。InnoDB有关其他信息,请参阅
table_definition_cache
文档。
InnoDB有几个内部性能增强,包括通过拆分内核互斥锁减少争用,将刷新操作从主线程移动到单独的线程,启用多个清除线程,以及减少大内存系统上缓冲池的争用。
InnoDB使用一种新的、更快的算法来检测
死锁。有关所有InnoDB
死锁的信息都可以写入 MySQL 服务器错误日志,以帮助诊断应用程序问题。
为避免
重启服务器后的预热时间过长,尤其是对于具有大InnoDB
缓冲池的实例,您可以在重启后立即将页面重新加载到缓冲池中。MySQL 可以在关闭时转储一个紧凑的数据文件,然后查询该数据文件以找到
要在下次重新启动时重新加载的页面。您还可以随时手动转储或重新加载缓冲池,例如在基准测试期间或复杂的报告生成查询之后。请参阅
第 14.8.3.5 节,“保存和恢复缓冲池状态”了解详情。
从 MySQL 5.6.16 开始,innochecksum
支持大于 2GB 的文件。以前,innochecksum只支持最大 2GB 的文件。
从 MySQL 5.6.16 开始,新的全局配置参数
innodb_status_output
和
innodb_status_output_locks允许您动态启用和禁用标准
InnoDBMonitor 和
InnoDBLock Monitor 以进行定期输出。通过创建和删除特殊命名的表来启用和禁用定期输出的监视器已被弃用,并且可能会在未来的版本中删除。有关其他信息,请参阅
第 14.17 节,“InnoDB 监视器”。
从 MySQL 5.6.17 开始,
在线 DDL
支持扩展到对常规表和分区InnoDB
表的以下操作:
OPTIMIZE TABLE
ALTER
TABLE ... FORCE
ALTER
TABLE ... ENGINE=INNODB(在
InnoDB桌子上运行时)
在线 DDL
支持减少了表重建时间并允许并发 DML。请参阅
第 14.13 节,“InnoDB 和在线 DDL”。
从 MySQL 5.6.42 开始,与 MySQL 捆绑的
zlib 库
版本从 1.2.3 版本提升到 1.2.11 版本。MySQL 在 zlib 库的帮助下实现压缩。
如果您使用InnoDB压缩表,请参阅第 2.11.3 节,“MySQL 5.6 中的更改”以了解相关的升级影响。