前些天看到網上有人說:「Mysql InnoDB 引擎 主鍵不適合用UUID , 若要用UUID的話可考慮用 自增ID作物理主鍵,UUID作邏輯主鍵。」
帶着以上問題,本人作了以下測試: mysql
先自報測試環境:
測試電腦配置如圖:
MySQL 5.1(社區版) my.ini配置以下 sql
[client] port = 3306 socket = MySQL [mysqld] port = 3306 socket = MySQL key_buffer_size = 64M max_allowed_packet = 16M thread_cache_size = 8 thread_concurrency = 8 max_connections = 100 table_open_cache = 2048 sort_buffer_size = 8M read_buffer_size = 2M read_rnd_buffer_size = 24M net_buffer_length = 2K thread_stack = 1024K server-id = 1 character-set-server=utf8 default-storage-engine=INNODB [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash character-set-server=utf8 [myisamchk] key_buffer_size = 64M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout
jdbcUrl = jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull user = root password = root devMode = true driverClass = com.mysql.jdbc.Driver maxPoolSize = 30 minPoolSize = 3 initialPoolSiz e= 3 maxIdleTime = 120 acquireIncrement = 3
測試語言爲:JAVA shell
框架使用的是:JFinal1.1.0 框架
測試結果以下: socket
一、插入測試: 測試
第一次 插入350000行數據 | 第二次 插入350000行數據 | 第三次 插入350000行數據 | 第四次 插入350000行數據 | 插入1000000行數據 | 插入8000000行數據 | |
UUID主鍵 | 33750毫秒 | 36772毫秒 | 34885毫秒 | 35217毫秒 | 111496毫秒 | 1070219毫秒 |
自增ID主鍵 | 27939毫秒 | 28709毫秒 | 29015毫秒 | 28728毫秒 | 85666毫秒 | 654988毫秒 |
自增ID物理主鍵、UUID邏輯主鍵(惟一索引) | 58578毫秒 | - | - | - | 110851毫秒 | - |
二、count()查詢 ui
count(*) | count(id) | |
UUID主鍵(表中有10400000行數據,ID在第一位) | 30634毫秒 | 31312毫秒 |
自增ID主鍵(表中有10400000行數據,ID在第一位) | 5461毫秒 | 5514毫秒 |
因爲時間緣由,就暫時測試這幾種狀況吧…… 畢竟在正式項目中,還有不少不可控因素…… 剩下的就是仁者見仁智者見智,我只是拋磚引玉…… 歡迎你們發表本身的意見……
轉載註明來源:http://my.oschina.net/u/1156688/blog/132919
spa