天天看點

mysql 5.6 新特性

mysql 5.6 中的新特性:

1.gtid複制:在一主多從的架構中,當主伺服器挂掉之後,需要從其他的從伺服器中選出一台作為新的主伺服器,

一台從伺服器成為新的主伺服器之後,其他的從伺服器需要連接配接新的主伺服器,從新的主伺服器中獲得資料。

在普通的複制架構中,從伺服器連接配接新主伺服器無法找到複制位置(mmm,mha架構除外),是以隻能重新做主從,

這個操作是相當痛苦的和耗時的。gtid複制可以很好的解決這個問題,從伺服器連結新的主伺服器的時候,

不需要人為指定複制位置,這個mysql自動完成。

詳情請見:http://dwchaoyue.blog.51cto.com/2826417/1559764

2.多線程複制:

MySQL 5.6之前的版本,同步複制是單線程的,隊列的,隻能一個一個執行,

在5.6裡,可以做到多個庫之間的多線程複制,例如資料庫裡,存放着使用者表,商品表,價格表,訂單表,那麼将每個業務表單獨放在一個庫裡,

這時就可以做到多線程複制,但一個庫裡的表,多線程複制是無效的。

注,每個資料庫僅能使用一個線程,複制涉及到多個資料庫時多線程複制才有意義。

mysql> show global  variables  like  'slave_pa%';

+------------------------+-------+

| Variable_name          | Value |

| slave_parallel_workers | 2     |

這裡顯示的兩個sql線程,一般情況下,在複制架構中有幾個庫,就将slave_parallel_workers 設定為多少。

使每個庫各自對應一個庫。

3.緩存預熱:在機器剛開始開啟的一段時間内,記憶體基本上是空的,沒人任何的資料,

是以在啟動之後的一段時間内,機器顯得很慢。mysql 5.6 專門針對innodb設計了一種

緩存預熱機制。這個可以通過變量進行設定:

mysql> show global  variables  like  'innodb_buffer_pool_%at%';

+-------------------------------------+-------+

| Variable_name                       | Value |

| innodb_buffer_pool_dump_at_shutdown | OFF   |

| innodb_buffer_pool_load_at_startup  | OFF   |

參數解釋:

innodb_buffer_pool_dump_at_shutdown:當機器正常關閉的時候講記憶體中的資料dump到磁盤上

并且預設生成一個緩存檔案 ib_buffer_pool

innodb_buffer_pool_load_at_startup:當機器啟動的時候将ib_buffer_pool 中的資料加載到記憶體中。

http://qdjalone.blog.51cto.com/1222376/1119804

4.mysql5.6之前的版本不支援now()作為預設值

例如:

version:5.1.34-log 

mysql> use  tempDB  ;

Database changed

mysql> select version();

+------------+

| version()  |

| 5.1.34-log | 

1 row in set (0.00 sec)

mysql> drop table if exists  tt  ;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> CREATE TABLE `tt` (

    ->   `db` char(64) NOT NULL,

    ->    dt  datetime not null  default now()  

    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ERROR 1067 (42000): Invalid default value for 'dt'

versoon:5.6.20-log

mysql> use Test  ;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

CREATE TABLE `tt` (

  `db` char(64) NOT NULL,

   dt  datetime not null  default now()  

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected, 1 warning (0.05 sec)

Query OK, 0 rows affected (0.16 sec)

mysql> 

| 5.6.20-log |

1 row in set (0.03 sec)

mysql5.6 的相關介紹:

http://blog.csdn.net/zuiaituantuan/article/details/8608533