Home >Database >Mysql Tutorial >Mysql InnoDB 引擎 主键性能

Mysql InnoDB 引擎 主键性能

WBOY
WBOYOriginal
2016-06-07 16:14:341041browse

前些天看到网上有人说:Mysql InnoDB 引擎 主键不适合用UUID , 若要用UUID的话可考虑用 自增ID做物理主键,UUID做逻辑主键。 带着以上问题,本人做了如下测试: 先自报测试环境: 测试电脑配置如图: MySQL 5.1(社区版) my.ini配置如下 [client]port=3306

    

前些天看到网上有人说:“Mysql InnoDB 引擎 主键不适合用UUID , 若要用UUID的话可考虑用 自增ID做物理主键,UUID做逻辑主键。”

 

    带着以上问题,本人做了如下测试:

    先自报测试环境:

     测试电脑配置如图:


     MySQL 5.1(社区版) my.ini配置如下

[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

c3p0连接池配置:
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

框架使用的是:JFinal1.1.0

测试结果如下:

1、插入测试:

   第一次 插入350000行数据  第二次 插入350000行数据 第三次 插入350000行数据   第四次 插入350000行数据  插入1000000行数据   插入8000000行数据
 UUID主键  33750毫秒  36772毫秒  34885毫秒 35217毫秒  111496毫秒  1070219毫秒
 自增ID主键  27939毫秒 28709毫秒   29015毫秒 28728毫秒  85666毫秒  654988毫秒
 自增ID物理主键、UUID逻辑主键(唯一索引)  58578毫秒  -  -  - 110851毫秒  -

2、count()查询

   count(*)                       count(id)                                                                 
UUID主键(表中有10400000行数据,ID在第一位) 30634毫秒 31312毫秒
自增ID主键(表中有10400000行数据,ID在第一位) 5461毫秒 5514毫秒

 

由于时间原因,就暂时测试这几种情况吧…… 毕竟在正式项目中,还有很多不可控因素…… 剩下的就是仁者见仁智者见智,我只是抛砖引玉

 

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:MySQL常用技巧大汇总Next article:mysql 查询嵌套