高容量数据库性能测试-mysql
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高容量数据库性能测试
耿红杰2010-10-25 测试环境说明
OS :CentOS 5.5 X86
MySQL:5.1.50 ,ha_innodb_plugin
CPU:Intel(R) Xeon(R) E5504 @ 2.00GHz
MEM:1G (1G swap)
Disk:20G
f
innodb_thread_concurrency=2
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=384M
default-table-type=InnoDB
init_connect='SET autocommit=0'
binlog_format=MIXED
log-bin=/disk2/mysql/binlog/using
query_cache_size=128M
测试目的
1.myisam和innodb引擎对于性能的影响,采用2000w的数据进行写入和查询测试
2.200000000数据的查询性能测试
3.myisam 引擎的分区功能
测试步骤1
1.create table
CREATE TABLE `innodb` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
`adress` varchar(45) DEFAULT NULL,
`markert` varchar(45) DEFAULT NULL,
`tel` varchar(45) DEFAULT NULL,
`base` varchar(45) DEFAULT NULL,
`log` varchar(45) DEFAULT NULL,
`time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.load data into table
while i < 20000001 do
INSERT INTO `innodb`
(`name`, `adress`, `markert`, `tel`, `base`, `log`)
VALUES (
'play10100101010101010101010101',
'abcdefghijklmnopqrstuvwxyz01234567890',
'abcdefghijklmnopqrstuvwxyz01234567890',
'0086-27-87654321-99888',
'abcdefghijklmnopqrstuvwxyz01234567890',
'abcdefghijklmnopqrstuvwxyz01234567890'
);
set i = i+1;
end while;
3.query data from table
Q1: select count(*) from myisam;
Q2: select min(time) from myisam;
Q3: select max(time) from myisam;
Q4: select count(*) from myisam where time = '2010-10-21 14:20:51';
Q5: select count(*) from innodb where id between 10010000 and 10020000;
测试步骤2
1.MyISAM分区表
CREATE TABLE `play_sum_p` (
`play_sum_id` int(10) unsigned NOT NULL ,
`play_name` varchar(45) DEFAULT NULL,
`play_date` date DEFAULT NULL,
`player_id` int(11) NOT NULL DEFAULT '0',
`content_id` int(11) NOT NULL DEFAULT '0',
`play_completed` int(11) DEFAULT NULL,
`play_aborted` int(11) DEFAULT NULL,
`play_unknown` int(11) DEFAULT NULL,
KEY `player_id_idx` (`player_id`,`content_id`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8
PARTITION BY RANGE (day(play_date))
( PARTITION p1 V ALUES LESS THAN (11) DATA DIRECTORY= '/disk2/mysql/p01' INDEX DIRECTORY =
'/disk2/mysql/p01',
PARTITION p2 V ALUES LESS THAN (21) DATA DIRECTORY= '/disk2/mysql/p02' INDEX DIRECTORY =
'/disk2/mysql/p02',
PARTITION p3 V ALUES LESS THAN (32) DATA DIRECTORY= '/disk2/mysql/p03' INDEX DIRECTORY =
'/disk2/mysql/p03'
);
测试结论
1.对于playlog这样大数据量的日志数据,“一次写入,几次查询,零次更新,无事务支持”的特性,
选择MyISAM是比较好的选择。测试结果说明,MyISAM在性能上明显优于InnoDB(2倍性能优势)。