成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL主鍵生成機制性能測試實例

數據庫 MySQL
對于生成主鍵,很多人都有不同的看法,下文以實例的形式為您分析MySQL主鍵生成機制性能,該測試功能參考。

下文對MySQL主鍵生成機制性能進行了測試,如果您對MySQL主鍵方面感興趣的話,不妨一看,相信對您學習MySQL主鍵會有所幫助。

最近有些MySQL管理人員在討論應該是使用自增序列(即AUTO_INCREMENT類型)還是用UUID函數來生成主鍵的問題。其中有個人推薦使用UUID函數來生成主鍵,其中一個理由是使用自增序列來生成主鍵會導致所有插入都集中在一個頁面上的情況,從而可能出現并發上的瓶頸。另外還有人推薦使用多個自增序列生成主鍵來解決這一問題。但這些技術實際上有沒有作用卻并沒有給出證據來支持,因此我決定來做一些實驗。

MySQL主鍵生成機制性能測試實驗環境如下:內存: 4G;IO: RAID 1+0, SCSI Ultra 320,帶BBWC;MySQL: 5.0.32;OS: 2.6.16-2-amd64-k8-smp x86_64 GNU/Linux;InnoDB Buffer: 128M。

MySQL主鍵生成機制性能測試測試程序很簡單,開20個線程,每個線程向測試表中插入數據,測試表都包含兩個字段,一個是主鍵,其類型與值的生成方式在不同的測試中會不同,另一個為字符串,所有測試中都插入長度為200,內容全是字符'a'的內容。

參與測試的有三個方案:
方案一:使用一個自增序列
測試表定義:
CREATE TABLE testpk_auto (a INT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(200)) engine = innodb;
插入數據語句:
INSERT INTO testpk_auto (b) VALUES('aaa...');

方案二:使用多個自增序列
測試表定義:
CREATE TABLE testpk_auto (a INT AUTO_INCREMENT PRIMARY KEY, b VARCHAR(200)) engine = innodb;
DELIMITER |
CREATE TRIGGER trans_auto BEFORE INSERT ON testpk_auto
FOR EACH ROW BEGIN
   set new.a = (new.a % 16 << 28) + (new.a / 16);
END;
|
DELIMITER ;

表定義中的trans_auto解發器用于將一個AUTO_INCREMENT序列轉化為16個AUTO_INCREMENT序列。從而使數據的插入點從一個頁面分散到16個頁面,有望減少更新同一個頁面導致的競爭。插入數據語句如下:

INSERT INTO testpk_auto (b) VALUES('aaa...');

方案三:使用UUID函數生成主鍵。
測試表定義:
CREATE TABLE testpk_uuid(a VARCHAR(64) PRIMARY KEY, b VARHCAR(255)) engine = innodb;
插入數據語句:
INSERT INTO testpk_auto (a, b) VALUES(uuid(), 'aaa...');

測試結果如下:

方案 插入速度(記錄/秒) 占用空間(MB)
一  3965 245
二 3777 245
二 2580 571

根據MySQL主鍵生成機制性能測試測試結果,使用自增序列產生主鍵的性能明顯優于使用UUID()函數,占用空間也只是使用UUID()時的一半不到。使用UUID()函數來產生主鍵導致插入點過于分散,使得插入的速度和空間占用上都不如使用自增序列。使用多個自增序列則與使用一個自增序列性能相差無幾,占用空間則幾乎完全相同,兩者都是比較好的方案。但根據這一結果看,使用一個自增序列時會導致并發上瓶頸這一說法并不成立,一般情況下應該不用擔心此問題。

PS: 若使用方案二中的觸發器來實現將一個自增序列轉化為16個自增序列的方法,需要注意在通過last_insert_id來獲得生成的鍵值時返回的是被觸發器修改之前的結果,若要得到真正生成的主鍵值也要按觸發器的定義上那樣計算一下。

 

 

 

【編輯推薦】

MySQL主鍵的設計原則

MySQL分區的優點

MySQL環境變量配置說明

mysql存儲過程問題解答

mysql存儲過程的調用方法

責任編輯:段燃 來源: 互聯網
相關推薦

2009-09-22 09:31:15

Hibernate主鍵

2009-06-29 08:50:20

Hibernate主鍵

2010-05-27 12:58:16

MySQL性能測試

2013-12-25 10:32:41

MySQL性能測試

2009-07-16 11:21:19

ibatis主鍵自動生成

2009-06-29 08:56:49

Hibernate主鍵生成主鍵

2009-09-25 13:33:43

Hibernate主鍵

2019-03-25 12:20:29

數據MySQL性能測試

2023-01-30 09:16:58

MySQL雪花算法

2011-03-09 09:11:52

java反射機制

2009-06-25 17:24:06

Hibernate主鍵

2010-10-15 09:37:14

MySQL性能測試

2011-03-15 16:34:36

Iptables性能

2011-02-23 11:18:48

MongoDBMySQL性能測試

2009-06-17 13:57:54

java實例Reflection

2013-01-10 14:54:48

Android開發組件Intent

2009-06-30 09:55:24

Spring運作機制

2009-09-28 10:52:33

Hibernate主鍵主鍵生成

2011-08-17 12:48:09

MySQL 5.5分區

2013-04-03 10:04:36

MySQL 5.6
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频久久 | 亚洲欧美在线观看视频 | 99只有精品| 91视频电影 | 91在线精品一区二区 | 精品乱码一区二区三四区 | 亚洲 欧美 综合 | 国产丝袜人妖cd露出 | 国产精品亚洲成在人线 | 五月婷婷色 | 91久久精品视频 | 龙珠z国语版在线观看 | 秋霞在线一区 | 久久精品亚洲一区二区三区浴池 | 国产日韩欧美在线观看 | 日日操操操 | 亚洲一区在线播放 | 一区二区不卡视频 | 爱爱视频在线观看 | 精产国产伦理一二三区 | 欧美日韩国产一区二区三区 | 热re99久久精品国99热观看 | 国产精品爱久久久久久久 | 久久69精品久久久久久国产越南 | 中文在线播放 | 99久久国产综合精品麻豆 | 国产日韩欧美中文 | 欧美日韩国产一区二区三区 | 日本在线视频中文字幕 | 特黄色毛片 | 红色av社区 | 热久久性| 久久精品久久久久久 | 美女在线观看av | 福利视频亚洲 | 亚洲精品第一国产综合野 | 国产中文视频 | 久操国产| 亚洲在线免费 | 黄色三级免费 | 中文精品久久 |