我想测试mysql上iblog文件的最佳值,即5.0.77,我在mysqlperformance中找到了以下过程:http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/
mysql> pager grep sequence
PAGER set to 'grep sequence'
mysql> show engine innodb status\G select sleep(60); show engine innodb status\G
Log sequence number 84 3836410803
1 row in set (0.06 sec)
1 row in set (1 min 0.00 sec)
Log sequence number 84 3838334638
1 row in set (0.05 sec)
mysql> select (3838334638 - 3836410803) / 1024 / 1024 as MB_per_min;
+------------+
| MB_per_min |
+------------+
| 1.83471203 |
+------------+但是,在MySQL5.0.x上,我看不到输出“”下的日志序列号。请给我一个知道mysql 5.0.x中当前日志序列号的方法好吗?
发布于 2012-11-16 19:10:46
我其实是在2012年8月27日写过这篇文章:使用48 on的服务器上30 on表的适当调优。以下是我过去答案的摘录(在题为Log File Size的一节):
5MB是诺姆b的默认大小。Percona的mysqperformanceblog.com给出了两篇关于为特定MySQL实例计算适当大小的优秀文章:
基本上,博客建议测量一个小时内写入InnoDB日志文件的字节数。这就是我想弄清楚的
SET @TimeInterval = 3600;
SELECT variable_value INTO @num1 FROM information_schema.global_status
WHERE variable_name = 'Innodb_os_log_written';
SELECT SLEEP(@TimeInterval);
SELECT variable_value INTO @num2 FROM information_schema.global_status
WHERE variable_name = 'Innodb_os_log_written';
SET @ByteWrittenToLog = @num2 - @num1;
SET @KB_WL_HR = @ByteWrittenToLog / POWER(1024,1) * 3600 / @TimeInterval;
SET @MB_WL_HR = @ByteWrittenToLog / POWER(1024,2) * 3600 / @TimeInterval;
SET @GB_WL_HR = @ByteWrittenToLog / POWER(1024,3) * 3600 / @TimeInterval;
SELECT @KB_WL_HR,@MB_WL_HR,@GB_WL_HR;节选
从这里你要去哪里?
在一周内每小时运行这些命令。当您确定@MB_WL_HR的最高数字时,取其中的一半并调整innodb_log_file_size的大小:参见my 如何安全地更改MySQL innodb变量‘innodb_日志_文件_尺码?
由于您可以以这种方式计算出适当的InnoDB日志文件大小,所以不需要为任何东西汇集show engine innodb status\G,特别是因为您说在MySQL 5.0中它不可用。
请记住,我的答案适用于MySQL 5.1/5.5。那么,您是如何在MySQL 5.0中这样做的呢?
这是件好事,状态变量Innodb_操作系统_日志_书面存在于MySQL 5.0中。
回顾过去,这是你最初的问题:
mysql> pager grep sequence
PAGER set to 'grep sequence'
mysql> show engine innodb status\G select sleep(60); show engine innodb status\G
Log sequence number 84 3836410803
1 row in set (0.06 sec)
1 row in set (1 min 0.00 sec)
Log sequence number 84 3838334638
1 row in set (0.05 sec)
mysql> select (3838334638 - 3836410803) / 1024 / 1024 as MB_per_min;
+------------+
| MB_per_min |
+------------+
| 1.83471203 |
+------------+在MySQL 5.0中,您必须这样做:
mysql> show global status like 'Innodb_os_log_written'; select sleep(60); show global status like 'Innodb_os_log_written';然后像你以前做的那样减法和乘:
mysql> show global status like 'Innodb_os_log_written'; select sleep(60); show global status like 'Innodb_os_log_written';
+-----------------------+--------------+
| Variable_name | Value |
+-----------------------+--------------+
| Innodb_os_log_written | 500034464256 |
+-----------------------+--------------+
1 row in set (0.01 sec)
+-----------+
| sleep(60) |
+-----------+
| 0 |
+-----------+
1 row in set (1 min 0.01 sec)
+-----------------------+--------------+
| Variable_name | Value |
+-----------------------+--------------+
| Innodb_os_log_written | 500047017984 |
+-----------------------+--------------+
1 row in set (0.01 sec)
mysql> select (500047017984 - 500034464256) / 1024 / 1024 as MB_per_min;
+-------------+
| MB_per_min |
+-------------+
| 11.97216797 |
+-------------+
1 row in set (0.00 sec)
mysql>试试看!!
https://dba.stackexchange.com/questions/28507
复制相似问题