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