所以我对调整 InnoDB 还很陌生。我正在慢慢地将表(在必要时)从 MyIsam 更改为 InnoDB。我在 innodb 中有大约 100MB,所以我将innodb_buffer_pool_size
变量增加到 128MB:
mysql> show variables like 'innodb_buffer%';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
当我去更改innodb_log_file_size
值时(例如mysql 的 innodb 配置页面上的my.cnf注释将日志文件大小更改为缓冲区大小的 25%。所以现在我的 my.cnf 看起来像这样:
# innodb
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
Run Code Online (Sandbox Code Playgroud)
当我重新启动服务器时,出现此错误:
110216 9:48:41 InnoDB:初始化缓冲池,大小 = 128.0M
110216 9:48:41 InnoDB:缓冲池初始化完成
InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 5242880 字节
InnoDB:比指定的.cnf 文件 0 33554432 字节!
110216 9:48:41 [错误] …
我有一个经常运行的导入过程,我希望它是一种“全有或全无”的交易,也就是:交易。
有很多方面,导入可能会产生 100k-1mil+ 记录之间的任何地方。这相当于有效载荷范围从几 MB 到几百 MB 的数据。
我知道临时表是另一种选择 - 但这种方法似乎很方便。
对于这种在提交之间进行大量数据操作的实践,是否有任何需要注意的警告?(在提交后的典型写入/索引负载突发之外)
我们有一个 MySQL 5.0 服务器,以 MyISAM 的形式运行所有表。我们有两个奴隶,在上个月,我们已经升级到 MySQL 5.5。他们的表也仍然是 MyISAM。
我原来的计划是把5.0的master升级到5.5,然后转成InnoDB。现在我想知道,在升级之前开始是否更有意义?我一直很谨慎,因为我听说 5.5 下的 InnoDB 比 5.0 下的 InnoDB 快得多。这是没有根据的,我现在应该开始吗?
即使我们使用启用了屏障的日志文件系统 (EXT3) ,这仍然更安全和推荐吗?
例如
mount -o barrier=1 /dev/sda /mntpnt
Run Code Online (Sandbox Code Playgroud)
参考:
innodb ×4
mysql ×4
myisam ×2
mysql-5.5 ×2
hardware ×1
linux ×1
logs ×1
maintenance ×1
transaction ×1