日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

实测 Mysql UUID 性能(转)

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实测 Mysql UUID 性能(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網上普遍認為Mysql? 使用 UUID 主鍵性能低下,甚至建議用 自增ID 作為主鍵并用 UUID作唯一索引的方案。但沒有提供具體的數據證明使用 UUID 作為主鍵時性能究竟低下到何種程度。為此我專門做了測試。

測試環境:WindowsXP ,內存 4G , CPU : Duo?T6570 , mysql : 5.1.36

測試準備:

1、 建表

我建了3 個表來做性能比對

表一:uuidtest_inno

Sql代碼 ?
  1. CREATE?TABLE?`uuidtest_inno`?(??
  2. `id`?char(36)?CHARACTER?SET?utf8?NOT?NULL?DEFAULT?'',??
  3. PRIMARY?KEY?(`id`)??
  4. )?ENGINE=InnoDB?DEFAULT?CHARSET=latin1??
?

?

表二:uuidtest_myisam

Sql代碼 ?
  1. CREATE?TABLE?`uuidtest_myisam`?(??
  2. ??`id`?char(36)?CHARACTER?SET?utf8?NOT?NULL?DEFAULT?'',??
  3. ??PRIMARY?KEY?(`id`)??
  4. )?ENGINE=MyISAM?DEFAULT?CHARSET=latin1??

?

?

表三:uuidtest_int

Sql代碼 ?
  1. ????CREATE?TABLE?`uuidtest_int`?(??
  2. ??????`id`?int(11)?NOT?NULL?AUTO_INCREMENT,??
  3. ??????`test`?varchar(255)?CHARACTER?SET?latin1?DEFAULT?NULL,??
  4. ??????PRIMARY?KEY?(`id`)??
  5. )?ENGINE=MyISAM?DEFAULT?CHARSET=utf8??

?

可以看到,表一使用UUID 主鍵,引擎為 InnodB ;表二使用 UUID 主鍵,引擎為 MyISAM ;表三使用 自增ID ,引擎為MyISAM ;

?

1、 編寫存儲過程

編寫存儲過程分別插入100000 條記錄:

?

p_uuid_inno

Sql代碼 ?
  1. BEGIN??
  2. ????set?@i?=?0;??
  3. ????while?@i?<?100000?do??
  4. ????????????insert?into?uuidtest_inno?value(uuid());??
  5. ????????set?@i?=?@i+1;??
  6. ????end?while?;??
  7. END??

?

p_uuid_myisam

Sql代碼 ?
  1. BEGIN??
  2. ????set?@i?=?0;??
  3. ????while?@i?<?100000?do??
  4. ????????????insert?into?uuidtest_myisam?value(uuid());??
  5. ????????set?@i?=?@i+1;??
  6. ????end?while?;??
  7. END??

?

?

p_uuid_int

Sql代碼 ?
  1. BEGIN??
  2. ????set?@i?=?0;??
  3. ????while?@i?<?100000?do??
  4. ????????????insert?into?uuidtest_int(test)?value("test");??
  5. ????????set?@i?=?@i+1;??
  6. ????end?while?;??
  7. END??

?

1、 運行

[SQL]?call?p_uuid_int;

影響的數據欄:?0

時間:?12.922ms

?

call?p_uuid_myisam;

影響的數據欄:?0

時間:?15.078ms

?

call?p_uuid_inno;

影響的數據欄:?0

時間:?4460.297ms

?

結論:當數據表的引擎為MyISAM 時,自增 ID 無疑是效率最高的, UUID 效率略低,但不會低到無法接受。一旦數據引擎為 InnodB 時,效率下降非常嚴重,已經達到令人發指的地步。由于 InnodB 主鍵采用 聚集索引 ,會對插入的記錄進行物理排序,而 UUID本身基本上是無序的,所以造成了巨大的 I/O 開銷。所以如果使用 innodB? 千萬不要使用 UUID 。

?

?

謝謝

?

2 樓 gaizai 2012-02-29?? 測試不嚴謹,你沒有測試innodb下的int,一樣的速度。

?

1 樓 laoxing521 2011-04-19?? 樓主有心

如果斷定是因為innodb是因為物理排序而造成性能損失, 那么是什么做主鍵就沒關系了
只要是無序的數字, 字符串做主鍵,都要有這樣的結果

人們講用uuid會影響性能, 是說UUID的生成效率不高. 而非插入效率,? 生成了之后,UUID就是一普通字符串了.

?

轉載于:https://www.cnblogs.com/tonykan/archive/2012/11/26/2788422.html

總結

以上是生活随笔為你收集整理的实测 Mysql UUID 性能(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。