InnoDB的恢复速度是一个十分让人困惑的问题。这里有很多关于它的讨论:
http://bugs.mysql.com/bug.php?id=29847
http://dammit.lt/2008/10/26/innodb-crash-recovery/
这些问题导致InnoDB奔溃的时候,需要很长的启动时间。即使从备份文件恢复也会影响到(包括LVM、xtrabackup 和 innobackup之类的备份方式)
我做了个简单的测试,I do crash mysql during in-memory tpcc-mysql benchmark with 16 running threads.(请问这个in-memory和tpcc-mysql是什么意思啊?)
MySQL参数:
innodb_buffer_pool_size=16G
innodb_log_files_in_group=3
innodb_log_file_size=512M
启动MySQL 5.4.1
090706 15:39:47 InnoDB: Database was not shut down normally!
...
090706 16:51:56 [Note] libexec/mysqld: ready for connections.
你可以看到共需1小时12分的启动时间。
在 XtraDB 我们做了改进,请看
090706 17:04:11 InnoDB: Database was not shut down normally!
...
090706 18:10:53 [Note] libexec/mysqld: ready for connections.
1小时6分,比之前快了,但还是很慢。
So Yasufumi sat, scratched his head and made new patch for InnoDB. 使用该补丁启动MySQL:
090707 19:00:01 InnoDB: Database was not shut down normally!
...
090707 19:06:42 [Note] libexec/mysqld: ready for connections.
6分41秒,快了10倍,值得深思。
这个补丁还不属于XtraDB官方分支,它在这里
http://bazaar.launchpad.net/~percona-dev/percona-xtradb/recovery-speed-hack/
这个补丁程序很小,我想让 InnoDB 专家对它进行审查:
http://bazaar.launchpad.net/~percona-dev/percona-xtradb/recovery-speed-hack/revision/86
欢迎您前来讨论。如果这个补丁稳定了,我将会集成在XtraDB 和 XtraBackup中。
原文:
Improving InnoDB recovery time
恩,说白了就是一个广告...
分享到:
相关推荐
- 使用较大的日志文件(与缓冲池大小相近)可以减少磁盘写入次数,但会增加恢复时间。 - 设置较大的日志缓冲区可以减少磁盘I/O。 5. **数据类型选择**: 对于变长字符串,使用VARCHAR代替CHAR可以节省空间,尤其...
由于磁盘的随机写入性能低,数据库会先将修改操作写入redo日志(顺序写入),然后在合适的时间将数据刷新到磁盘。如果发生故障,数据库可以通过重做redo日志中的内容来恢复数据,确保已提交事务的影响得以保留。 另...
10. **innodb_log_file_size**:数据日志文件的大小直接影响事务日志的容量,更大的设置可以减少磁盘I/O,但恢复时可能需要更长时间。 11. **innodb_log_files_in_group**:设置日志文件的数量,用于循环记录事务...
行级锁保证了在同一时间,不同事务可以并发访问数据库的不同行,而不会相互影响。意向锁则是为了在获取行级锁之前先锁定索引范围,避免死锁。 **持久性(Durability)**:持久性意味着一旦事务提交,其结果将永久...
InnoDB数据恢复时间加快:利用更有效的数据恢复机制,减少系统重启后恢复数据所需的时间。 g. 多个Buffer Pool实例的支持:允许配置多个缓冲池实例来分散内存分配,提高并发访问效率。 h. 可关闭自适应哈希索引...
1.1.6 innodb的数据恢复时间加快 11 1.1.7 innodb同时支持多个bufferpool实例 15 1.1.8 可关闭自适应哈希索引 17 1.1.9 在innodb中可选择使用内存分配程序 18 1.1.10 提高默认innodb线程并发数 21 1.1.11 预读...
- **系统参数调整:** 调整`innodb_buffer_pool_size`、`innodb_log_file_size`等参数,以改善数据库性能。 - **硬件升级:** 对于性能瓶颈明显的场景,考虑升级硬件设备(如增加内存、使用SSD等)。 - **负载均衡:...
- 通过优化恢复机制,显著减少了重启后的恢复时间。 - 这对于保证服务可用性非常关键。 2. **InnoDB 数据字典大小限制**: - 对数据字典的大小进行了限制,防止其无限增长导致性能下降。 - 有助于维持数据库的...
B选项增加读取IO线程可能改善I/O性能,但不一定能解决长时间等待;C选项改变索引类型可能影响性能,但与等待无关。 1.4 题目讨论的是主从复制的简单架构。这部分没有提供具体的问题或选项,但通常会涉及如何扩展...
5. InnoDB的改进包括支持数据压缩和恢复,以及提供更高级别的并发控制和事务处理优化。 6. 复制功能的改进带来了半同步复制和自动中继日志恢复等特性。 7. 可用性的提高,比如对SIGNAL/RESIGNAL的新SQL语法的支持...
"1_MYSQL阑 Innodb 瘤盔窍霸 汲摹窍扁 .hwp"可能详细讲述了InnoDB的工作原理和性能优化技巧,包括如何利用InnoDB的自适应哈希索引来提高查询速度,以及如何通过调整缓冲池大小来改善内存使用效率。 "3_抛捞喉俊 饭...
通过分析这些数据,可以找出性能瓶颈并进行相应的优化,如调整配置参数、优化查询语句、改善硬件配置等。 ### 安全性与备份恢复 数据库的安全性和数据的备份恢复也是重要的管理任务。MySQL提供了用户权限管理、...
此外,恢复过程也更为高效,可以更快地恢复到特定时间点。 8. **分区功能**:MySQL 5.7扩展了分区功能,支持更多的分区策略,如线性哈希分区,这有助于改善大型表的查询性能。 9. **性能监控**:提供了性能_schema...
- **缓冲池的备份与恢复**:支持对InnoDB的缓冲池进行备份与恢复,这对于处理大容量数据的系统来说非常有用,尤其是冷启动时能够大大减少等待时间。 #### 五、新特性、查询优化器改进及复制功能 - **Oracle MySQL ...
- **线程池插件**:允许对并发线程进行限制和管理,减少系统资源消耗,提高服务器响应时间。 - **Query Cache优化**:查询缓存的性能得到了显著提升,可以更快地返回已缓存的结果,但请注意,此功能在MySQL 8.0中...
对比图表显示,当开启执行计划缓存后,无论是Throughput(吞吐量)还是Response time(响应时间)都有明显改善,尤其在高并发环境下,性能提升更为显著。 其次,AliSQL支持动态添加字段这一在线操作,使得在不影响...
对于高并发读写、事务安全性和数据恢复能力要求较高的应用,建议选择 InnoDB 引擎。对于一些简单的应用,MyISAM 引擎也是一个不错的选择。 2. 索引优化:索引是提高 MySQL 性能的关键之一。通过合理地创建和使用...