innodb的增强:
varchar的增大可以使用in-place的alter table命令,适用的情况是长度字节仍然相同的情况,对于varchar 0到255,一个长度字节用来加密值,对于256字节或更大的值,2个长度字节用来加密值,所以in placce 的alter table只能支持0到255大小,或是值等于或高于256字节在增大。不支持小于256字节的长度扩大比256长,这种情况下长度字节从1变成了2,需要使用表拷贝的方式了。
官网上的例子,字段从255增大到256,使用in place报错:
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change
column type INPLACE. Try ALGORITHM=COPY.
减小长度也只能使用表拷贝的方式。
对于临时表的ddl操作进行了优化。
innodb的临时表的元数据不在存放在系统表上,而是放到了新表innodb_temp_table_info中。
对于非压缩的临时表都会放置在各自的表空间中。新的表空间在服务启动时创建,可以通过innodb_temp_data_feil_path指定。
对于常规和压缩的临时表,一个新的非redo的undo被放置在临时表空间中。
innodb buffer pool的dump和load操作进行了优化,innodb_buffer_pool-dump_pct允许指定buffer pool的dump的数量。当有后台任务的io活动时候,innodb通过innodb_io_capacity来限制buffer pool 加载的数量。
innodb现在支持多个刷新buffer pool实例的脏数据的清理线程,innodb_page_cleaners指定线程数量。默认值是1.
fusion-io non-volatile memory (nvm)文件系统提供原子写入的能力,对于位于fusion-io设备上的表空间文件,二次写入默认是禁用的。
innodb_buffer_pool_size参数是动态的额了,可以无需重启服务器即可调整大小。
set global innodb_buffer_pool_size=5*1024*1024*1024;这个是比较实用的功能。
重置大小的操作是以chunk为单位的,chunk的大小是通过innodb_bufer_pool_chunk_size配置的。
多线程的页清理(innodb_page_cleaners)对shutdown和recovery阶段被扩展。
新的log记录类型(mlog_file_name)被用来上次检查点后修改过的表空间。这个简化了崩溃恢复过程的查找表空间的过程。
可以truncate位于undo表空间中的undo日志。需要通过innodb_undo_log_truncate配置。
innodb支撑本地分区,之前的版本中为每个分区创建一个handler对象,对于本地分区,一个分区表使用一个handler对象。这个降低了分区表需要的内存数量。
dynamic替换了compact成为默认的表行格式,配置参数innodb_default_row_format指定了默认的innodb行格式。
开始支持create tablespace语法。
mysql5.7 innodb新特性
翻译
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
MySQL5.7的新特性
一、MySQL5.7的新特性 一、MySQL服务功能增强 1、数据库初始化方式变更 2、支持为表增加计算列
数据库 mysql json 服务器 -
mysql5.7新特性JSON数据类型解析
mysql5.7新特性JSON数据类型解析
mysql json mysql