一、各版本的常用命令差異
show innodb status\G mysql-5.1
show engines innodb status\G mysql-5.5
關於grant授權 mysql-5.5 的 user@'%'不包含localhost
二、MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區別
mysql-server-4.1
增加了子查詢的支援,字元集增加UTF-8,GROUP BY語句增加了ROLLUP,mysql.user表採用了更好的密碼編譯演算法,innodb開始支援單獨的資料表空間。
mysql-server-5.0
增加了Stored procedures、Views、Cursors、Triggers、XA transactions的支援,增加了INFORATION_SCHEMA系統資料庫。
mysql-server-5.1
增加了Event scheduler,Partitioning,Pluggable storage engine API ,Row-based replication、Global層級動態修改general query log和slow query log的支援。
小版本的重要特性:
5.1.2 開始支援微秒級的慢查詢。關於慢查詢相關資訊請參考 http://linuxguest.blog.51cto.com/195664/721042
mysql-server-5.5
1)預設儲存引擎更改為InnoDB
2)提高效能和可擴充性
a. 提高了預設線程並發數(innodb_thread_concurrency)
b. 後台輸入/輸出線程式控制制(innodb_read_io_threads、innodb_write_io_threads)
c. 主線程輸入/輸出速率控制(innodb_io_capacity)
d. 作業系統記憶體配置程式使用控制(innodb_use_sys_malloc)
e. 適應性散列索引(Hash Index)控制,使用者可以關閉適應性散列功能。
f. 插入緩衝(Insert Buffering)控制,使用者可以關閉innodb的插入緩衝功能。
g. 通過快速加鎖演算法提高可擴充性,innodb不在使用代理(posix)線程,而是使用原生的獨立操作來完成互斥和讀寫鎖定。
h. 恢複組提交(Restored Group Commit)
i. 提高恢複效能
j. 多緩衝池執行個體
k. 多個復原段(Multiple Rollback Segments),之前的innodb版本最大能處理1023個並發處理操作,現在mysql5.5可以處理高達128K的並發事物,
l. Linux系統固有的非同步輸入/輸出,mysql5.5資料庫系統也提高了linux系統的輸入輸出請求的並發數。
m. 擴充變化緩衝:添加了刪除緩衝和清除緩衝
n. 改善了日誌系統互斥和單獨重新整理(Flush)列表互斥
o. 改善清除程式進度,在mysql5.5中清楚操作線程是獨立的線程,並支援並發,可以使用innodb_purge_treads配置。
p. 改善交易處理中的中繼資料鎖定。例如,事物中一個語句需要鎖一個表,會在事物結束時釋放這個表,而不是像以前在語句結束時釋放表。
3)提高實用性
a. 半同步複製(Semi-synchronous Replication)
b. 複製Heartbeat
c. 中繼日誌自動回復(Automatic Relay Log Recovery)
d. 根據伺服器過濾項複製(Replication Per Server Filtering)
e. 從伺服器複製支援的資料類型轉換(Replication Slave Side Data Type Conversions)
4)提高易管理性和效率
a. 建立快速索引(Faster Index Creation)
b. 高效的資料壓縮(Efficient Data Compression)
c. 為大物件和可變長度列提供高效儲存
d. 增加了INFORMATION_SCHEMA表,新的表提供了與InnoDB壓縮和交易處理鎖定有關的具體資訊。
5)提高可用性
a. 針對SIGNAL/RESIGNAL的新SQL文法
b. 新的表/索引分割區選項。MySQL5.5將表和索引RANG和LIST分區範圍擴充到了非整數列和日期,並增加了在多個列上分區的能力。
6)改善檢測和診斷
Mysql5.5引入了一種新的效能架構(performancn_shema,P_S),用於監控mysql監控伺服器運行時的效能。
小版本的重要特性:
percona-server-5.5.18.23支援group commit 參考:http://www.orczhou.com/index.php/2011/12/time-to-group-commit-2/
mysql-server-5.6
1)InnoDB現在可以限制大量表開啟的時候記憶體佔用過多的問題(比如這裡提到的)(第三方已有補丁)
2)InnoDB效能加強。如分拆kernel mutex;flush操作從主線程分離;多個perge線程;大記憶體最佳化等
3)InnoDB死結資訊可以記錄到 error 日誌,方便分析
4)MySQL5.6支援延時複製,可以讓slave跟master之間控制一個時間間隔,方便特殊情況下的資料恢複。
5)表資料分割函數增強
6)MySQL行級複製功能加強,可以降低磁碟、記憶體、網路等資源開銷(只記錄能確定行記錄的欄位即可)
7)Binlog實現 crash-safe
8)複製事件採用crc32校正,增強master/slave 複製資料一致性
9)新增 log_bin_basename (以前variables裡面沒有binlog位置資訊,對資料庫的監管很不方便)