Windows 7 下 MYSQL 分区测试
Windows 7 下 MYSQL 分区测试
1. 检测数据库版本信息
SELECT VERSION(); |
2. 检测是否支持分区
SHOW VARIABLES; SHOW VARIABLES LIKE '%partition%'; |
3. 创建测试数据表
//创建users00表(支持10个分区) CREATE TABLE users00 ( uid INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) DEFAULT '', `email` VARCHAR(64) DEFAULT '', PRIMARY KEY (uid) ) ENGINE=MYISAM PARTITION BY RANGE(uid)( PARTITION p1 VALUES LESS THAN (10000), PARTITION p2 VALUES LESS THAN (20000), PARTITION p3 VALUES LESS THAN (30000), PARTITION p4 VALUES LESS THAN (40000), PARTITION p5 VALUES LESS THAN (50000), PARTITION p6 VALUES LESS THAN (60000), PARTITION p7 VALUES LESS THAN (70000), PARTITION p8 VALUES LESS THAN (80000), PARTITION p9 VALUES LESS THAN (90000), PARTITION p10 VALUES LESS THAN maxvalue ); //创建users01(不进行分区) CREATE TABLE users01 ( uid INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) DEFAULT '', `email` VARCHAR(64) DEFAULT '', PRIMARY KEY (uid) ) |
4. 创建存储过程
//创建dousers00存储过程 完成 users00表中 插入10w条数据 DELIMITER // CREATE PROCEDURE dousers00() BEGIN DECLARE i INT DEFAULT 1; WHILE i<=100000 DO INSERT INTO users00(`name`,`email`) VALUES ('sunny','yuhan8239288@163.com'); SET i=i+1; END WHILE; END; // //创建dousers01存储过程 完成 users00表中 插入10w条数据 DELIMITER // CREATE PROCEDURE dousers01() BEGIN DECLARE i INT DEFAULT 1; WHILE i<=100000 DO INSERT INTO users01(`name`,`email`) VALUES ('sunny','yuhan8239288@163.com'); SET i=i+1; END WHILE; END; // |
5. 执行存储过程 插入数据
CALL dousers00(); CALL dousers01(); |
6. 测试查询速度
由于插入users01表时执行速度过慢 只插入了38812条数据 (users00表中是100000条数据)
执行查询users01表 执行查询users00表 Sqlyog中的结果 SELECT COUNT(*) FROM users01 SELECT COUNT(*) FROM users00 |
7. 总结
由于数据插入原因 users01表中的数据远没有users00表中的数据多(users01中的数据时users00表中的2/5),然而执行速度上users01的时间 是 0.023s 如果按照数据量的比例换算 时间是 0.0575s ,跟users00表执行的时间进行对比,users00表执行宿舍比users01表的执行速度快出1.5倍