本文的主要目的是通過對當前項目中使用的各種版本的數據庫進行比較,分析各自特性和穩定程度,最終推薦合適的版本作為今後的標准數據庫。
當前,部門負責管理維護的現網使用數據庫有Oracle、MySQL、PostgreSQL
等;由於使用的數據庫大小版本各異,不利於規范管理,需要制定統一的標准。
無
在線版本
使用率
MySQL5.1
較高
MySQL5.5
較高
MySQL5.6
較高
MySQL5.7
較高
Oracle/PostgreSQL
低
表1
從統計結果看,使用較多是MySQL,標准數據庫選型將從MySQL中挑選。MySQL是一個關系型數據庫管理系統,由瑞典 MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面 MySQL 是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。MySQL 是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL 所使用的 SQL 語言是用於訪問數據庫的最常用標准化語言。MySQL 軟件采用了雙授權政策(本詞條“授權政策”),它分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。由於其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。
MySQL的小版本較多,5.1/5.5有40多個,5.6有24個,5.7有8個;從穩定性來看不推薦最新的版本,5.7暫不考慮,主要分析5.1、5.5、5.6版本。
Release
最後更新
5.1.72
2013-9-11
5.5.45
2015-6-28
5.6.26
2015-7-15
5.7.8
2015-7-21
表2
OS版本
特性
5.1
表格和索引的分區特性 —— MySQL 5.1支持5種形式的水平數據分區:range、hash、key、list和復合composite分區(子分區)。通過表格和索引數據的分區,可做到僅僅是對需要的相關數據分區進行掃描,而不是掃描整個的表格和索引,因此就獲得了更快速的查詢響應。而且,有了分區特性,許多存儲和其他維護操作變得更加容易和快速。
基於單元(row-based)的復制和混合復制特性 —— 這是MySQL 5.1內提供的兩個新的復制選項。“基於單元的復制”是復制主服務器和從服務器之間的數據變化(而不是實際的SQL語句),而“混合復制”采用的或是基於語句復制,或是基於單元的復制,這取決於一個個的SQL操作 —— 對於應用來講,這就形成並保持了最有效的和最安全的復制機制。
事件調度特性 —— 這是一個新的工具,它可讓開發者和經營管理自動調度數據庫服務器上要執行的、通用的基於SQL的循環(recurring)任務。這一特性比起Linux或Unix中的CRON,或Microsoft Windows的任務調度程序,可對數據庫特定的任務提供更大的支持。
新的MySQL Query Analyzer (查詢分析器) —— 享受優惠的MySQL Enterprise訂購項目將提供Sun的這一新的MySQL Query Analyzer工具,該工具通過監控查詢性能來精確定位和修改有問題的SQL 代碼,可以大大改善MySQL數據庫應用的速度和正常運行時間。
5.5
1. 默認存儲引擎更改為InnoDB
InnoDB的數據恢復時間從過去的一個甚至幾個小時,縮短到幾分鐘。InnoDB Plugin 支持數據壓縮存儲,節約存儲,提高內存命中率,並且支持adaptive flush checkpoint, 可以在某些場合避免數據庫出現突發性能瓶頸。Multi Rollback Segments: 原來InnoDB只有一個Segment,同時只支持1023的並發。現已擴充到128個Segments,從而解決了高並發的限制。
2. 多核性能提升
Metadata Locking (MDL) Framework替換LOCK_open mutex (lock),使得MySQL5.1及過去版本在多核心處理器上的性能瓶頸得到解決,官方表示將繼續增強對MySQL多處理器支持,直至MySQL性能 “不受處理器數量的限制”
3. 復制功能(Replication)加強
MySQL復制特性是互聯網公司應用非常廣泛的特性,作為MySQL最實用最簡單的擴展方式,過去的異步復制方式已經有些不上形勢,對某些用戶 來說“異步復制”意味著極端情況下的數據風險,MySQL5.5將首次支持半同步(semi-sync replication)在MySQL的高可用方案中將產生更多更加可靠的方案。另外Slave fsync tunning;Relay log corruption recovery和Replication Heartbeat也將實現
4. 增強表分區功能
5. Insert Buffering 如果在buffer pool中沒找到數據,那麼直接buffer起來,避免額外的IO;Delete & Purge Buffering 跟插入一樣,如果buffer pool中沒有命中,先buffer起來,避免額外的IO。
6. Support for Native AIO on Linux
以上的特性在MySQL 5.5的社區版當中都將包括,在MySQL企業版當中,除以上更新之外,Oracle還加強了更多實用的企業級功能,包括:
實現在線物理熱備
MySQL Enterprise Monitor 2.2 & Oracle Enterprise Monitor
MySQL Workbench
關於未來的重要提醒:Oracle的管理工具,MySQL也將能夠使用
5.6