背景
日志型应用的一个典型操作,是周期性地有大量的insert操作。这类操作需要对扩展表空间。
分析
在InnoDB里,扩展表空间的操作是在语句执行过程中,由执行线程直接调用的。
尤其是对于一些表每行比较大,则会出现每插入几条记录就需要扩展表空间。
虽然有insert buffer和write ahead logging策略保证在执行线程中不直接操作表数据文件,但扩展表空间的操作会导致更新的tps出现瞬间低点。现象如下图。实际上整体TPS也受此影响。
改进方案及可行性
可以在这类大操作之前预分配表空间来优化这个问题。我们的业务上线之前都有容量预估,每天也有监控。因此接下来一段时间表空间增长到多少,是能够预估得到。
在实际更新开始之前,在低峰期甚至是提供服务之前就将表空间预分配好,能够避免这种抖动和提高TPS。
工具验证
InnoDB的表空间结构上,空间头部有4个byte的数字N表示这个表空间的大小(page数目),文件的实际大小是N*Page_SIZE.
实现了一个工具extend_space,修改4个byte并将文件append到指定的大小。测试发现insert性能提升10%。由这个原因引起的抖动消除。
后续
目前还只是用工具实现。工具使用起来比较麻烦,主要是更新过程中的锁表操作就需要外部脚本,而且以后应用的新版本中page_size可变,因此比较优美的方案是将这个功能加入到MySQL支持的命令中。
补充更新
新增MySQL命令支持预扩展
http://bugs.mysql.com/bug.php?id=63858
效果如图
- 大小: 17.8 KB
分享到:
相关推荐
而InnoDB的Insert Buffer部分是缓冲池的一部分,且可能占用缓冲池的一半大小。 4. 并发和缓冲写入机制 innodb_read_io_threads和innodb_write_io_threads参数分别用于管理读写I/O线程。InnoDB通过doublewrite机制将...
本书还对MySQL 6版本中InnoDB的改进进行了全面的介绍。与前一版相比,第2版不仅针对最新的MySQL 6对相关内容进行了全面的补充,还根据广大读者的反馈意见对第1版中存在的不足进行了完善,《MySQL技术内幕:InnoDB...
本文详细介绍了MySQL InnoDB存储引擎中的索引原理及其实现方式,特别是B+树的应用。通过对比不同的树形结构,我们了解到B+树为何成为数据库索引的理想选择。此外,还讨论了InnoDB与MyISAM的主要差异,以及索引的插入...
在深入探讨MySQL的体系结构及其核心组件InnoDB之前,我们先来理解几个基础概念。 1. **MySQL简介** MySQL是一种开源的关系型数据库管理系统(RDBMS),广泛应用于Web应用和其他软件系统中。它支持SQL(Structured ...
最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...
如果一切正常,您应该能在输出结果中看到InnoDB及其相关信息。 #### 七、总结 本文详细介绍了如何在已安装MySQL的情况下手动安装InnoDB插件。通过这些步骤,您可以确保MySQL具备完整的功能集,特别是对于需要事务...
利用MySQL性能监控工具如SHOW STATUS、SHOW VARIABLES、SHOW ENGINE INNODB STATUS等,监控InnoDB的运行状态,及时发现和解决问题。 总结,MySQL的InnoDB存储引擎在提供强大功能的同时,也带来了丰富的优化可能性...
总的来说,`py_innodb_page_info`是MySQL数据库管理员和开发者的得力助手,它提供了深入理解InnoDB存储引擎内部运作的工具,使我们能够更好地调试问题、优化性能和设计更高效的数据模型。通过学习和使用这个工具,...
`命令检查InnoDB状态,以便及时发现潜在问题。 - **调整参数**:根据实际负载和性能测试结果动态调整上述参数,寻找最佳配置方案。 - **使用工具**:利用MySQL提供的工具如`mysqldump`、`mysqlcheck`等进行维护操作...
InnoDB Plugin 1.0.6 for MySQL 5.1 是InnoDB的一个早期采用者发布版,它带来了许多新特性以及对现有功能的改进。 #### 版权声明与分发许可 InnoDB Plugin 1.0.6 for MySQL 5.1 的用户指南版权由 Innobase Oy 和 ...
通过对MySQL InnoDB源码实现的深入分析,我们可以看到InnoDB在查询优化、Insert Buffer、Checkpoint以及Group Commit等方面采用了多种高级技术来提高数据库系统的性能和可靠性。理解这些核心机制不仅有助于开发人员...
通过上述改进,MySQL 5.6 的 InnoDB 引擎不仅提高了数据库的整体性能,还增加了许多实用的新功能,极大地满足了现代应用程序的需求。这些新特性的加入,使得 MySQL 5.6 成为了一个非常强大的数据库平台,无论是在...
1. **版本兼容性**:确保InnoDB Plugin与MySQL的版本兼容,否则可能引发未知问题。 2. **数据迁移**:升级前,需要对现有InnoDB表进行备份,因为InnoDB Plugin可能不完全兼容旧的数据格式。 3. **监控与调优**:...
这是我从网上找到的mysql/mariadb对innodb表进行数据恢复的工具,实现从innodb的数据库文件中恢复数据,用于实现下面情况:1、直接下载了innodb数据库的文件,而不是导出其数据,想恢复数据时(需要有完整的文件,...
6、如果和MyISAM比insert写操作的话,Innodb还达不到MyISAM的写性能,如果是针对基于索引的update操作,虽然MyISAM可能会逊色Innodb,但是那么高并发的写,从库能否追的上也是一个问题,还不如通过多实例分库分表...
### MySQL Innodb锁解决并发问题 #### 一、问题描述及解决过程 在现代数据库管理系统中,处理并发访问是至关重要的。特别是在高并发场景下,如何确保数据的一致性和完整性成为了一个挑战。本文将通过一个具体的...
### MySQL Innodb 引擎特性详解 #### 一、MySQL Innodb 引擎概述 MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它提供了多种存储引擎以满足不同场景的需求。其中,InnoDB是最常用的一种存储引擎之一,...
通过《InnoDB 中文参考手册》,读者可以学习到如何有效地设计和管理InnoDB表,优化查询,配置存储参数,以及解决常见的性能问题。这是一份不可或缺的参考资料,无论你是数据库新手还是经验丰富的DBA,都能从中获益匪...
深入学习《MySQL内核:InnoDB存储引擎 卷1》,读者可以了解到InnoDB的内部工作机制,如如何处理B+树索引、事务的提交与回滚、锁的实现以及内存管理等内容,这对于优化数据库性能、解决并发问题、设计高效的数据模型...