mysql5.7 innodb新特性

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语法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值