公司的有個項目是用mysql的作的,我本身的機子上裝的是mysql 5.0 ,個人上司裝的是5.1.在用spring 的jdbcTemple的方式進行查詢,而後把查詢出來的list<map>直接放在json的格式中,但一直沒法解析。但我上司那邊就能夠解析,鬱悶了,找了老半天都找不出緣由,各個問題都排除了,最終無奈改了下mysql的版本,用上mysql 5.1,神奇的事情發生了,能夠解析了。mysql
我特地去學習了下各個版本的區別。linux
-----下面的抄別人的,算法
- MySQL 4.1/5.0/5.1/5.5/5.6各版本的主要區別
- 一、4.1 增長了子查詢的支持,字符集增長UTF-8,GROUP BY語句增長了ROLLUP,mysql.user表採用了更好的加密算法。
- 二、5.0 增長了Stored procedures、Views、Cursors、Triggers、XA transactions的支持,增長了INFORATION_SCHEMA系統數據庫。
- 三、5.1 增長了Event scheduler,Partitioning,Pluggable storage engine API ,Row-based replication、Global級別動態修改general query log和slow query log的支持。
- 四、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監控服務器運行時的性能。
五、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位置信息,對數據庫的監管很不方便)