mysql5.6與5.5相比,某些參數的默認值發生了變化。
完整版見這裡:
https://blogs.oracle.com/supportingmysql/entry/server_defaults_changes_in_mysql
作者寫的很用心,每個參數都鏈接到了mysql的文檔,很贊。
第一感覺:
以前,很多默認值是寫死的,現在改為利用公式來計算了。
下面只提一些看起來比較有意思的:
1) innodb_file_per_table 默認值從0改為1
大多數情況下都很合理,也很合邏輯,
每張表都有自己獨立的表空間,應該會增加並發性能吧。
不過,如果有上萬甚至數十萬張表,可能會有些問題。
2) innodb_stats_on_metadata 默認值從ON改為OFF
注意下面語句的運行時間:
mysql> SHOW global VARIABLES LIKE '%innodb_stats_on_metadata%';
+--------------------------+-------+
| Variable_name | VALUE |
+--------------------------+-------+
| innodb_stats_on_metadata | ON |
+--------------------------+-------+
1 ROW IN SET (0.00 sec)
mysql>
mysql> SELECT COUNT(*),SUM(data_length) FROM information_schema.TABLES;
+----------+------------------+
| COUNT(*) | SUM(data_length) |
+----------+------------------+
| 686 | 148745889 |
+----------+------------------+
1 ROW IN SET (4.07 sec)
mysql> SET global innodb_stats_on_metadata=0;
Query OK, 0 ROWS affected (0.00 sec)
mysql> SELECT COUNT(*),SUM(data_length) FROM information_schema.TABLES;
+----------+------------------+
| COUNT(*) | SUM(data_length) |
+----------+------------------+
| 686 | 150841005 |
+----------+------------------+
1 ROW IN SET (0.04 sec)
mysql> SET global innodb_stats_on_metadata=1;
Query OK, 0 ROWS affected (0.00 sec)
mysql> SELECT COUNT(*),SUM(data_length) FROM information_schema.TABLES;
+----------+------------------+
| COUNT(*) | SUM(data_length) |
+----------+------------------+
| 686 | 150841005 |
+----------+------------------+
1 ROW IN SET (0.88 sec)
innodb_stats_on_metadata設置為0(OFF)之後,information_schema的讀取速度明顯快了很多。
3) query_cache_type 默認值從ON變為OFF
默認就禁用query cache了。
4) innodb_buffer_pool_instances 默認值從1變為8。
innodb_buffer_pool_size 會被分隔成 innodb_buffer_pool_instances 這麼多塊。
建議每一塊至少占用1G內存。