内容简介:上一次我们搭建了TiDB 环境,那么现在我想用跑跑数据,看看 TiDB 和 传统 MySQL 相比到底优越在哪里。由虚拟机搭建集群,共享 CPU 和内存配置暂时缺失…
上一次我们搭建了TiDB 环境,那么现在我想用跑跑数据,看看 TiDB 和 传统 MySQL 相比到底优越在哪里。
数据库配置
TiDB 集群
由虚拟机搭建集群,共享 CPU 和内存
- CPU:Xeon(R) X5650 * 2 (两个物理 CPU,逻辑 24 核)
- 内存:64G DDR3 1333MHz
- 主硬盘: 5.45 TB raid5 (DELL 服务器磁盘 7200 转)
- 固态:120GB * 3 (非服务器 SSD)
MySQL 单例
配置暂时缺失…
数据准备
下载测试数据
所有数据均来自于 Stack Exchange Data Dump 。
当然下载的数据都是 xml 格式,方便大家使用,已经转化成 MySQL 能使用的 sql 文件了。
下载:
- 小数据: math_stackchange
- 大数据: stackoverflow
插入数据
把对应的数据库建立好,导入数据即可。由于数据大概有 15G 左右,导入时间过长,可以看部电影耐性等待。
注: 导入数据到 TiDB 集群明显比传统 MySQL 数据库慢,这里我暂时还没有找到原因。
$ mysql -uroot -h192.168.13.157 -P 4000 math_stackexchange < math_stackexchange.sql $ mysql -uroot -h192.168.13.157 -P 4000 stackoverflow < stackoverflow.sql
测试
测试表信息
- comments 表
CREATE TABLE `comments` ( `Id` BIGINT(20) NOT NULL AUTO_INCREMENT, `PostId` BIGINT(20) NULL DEFAULT NULL, `Score` INT(11) NULL DEFAULT NULL, `Text` TEXT NULL, `CreationDate` DATETIME NULL DEFAULT NULL, `UserId` BIGINT(20) NULL DEFAULT NULL, `UserDisplayName` VARCHAR(100) NULL, PRIMARY KEY (`Id`), INDEX `CreationDate` (`CreationDate`) ) COLLATE='utf8mb4_bin' ENGINE=InnoDB ;
- users 表
CREATE TABLE `users` ( `Id` BIGINT(20) NOT NULL AUTO_INCREMENT, `Reputation` INT(11) NULL DEFAULT NULL, `CreationDate` DATETIME NULL DEFAULT NULL, `DisplayName` VARCHAR(100) NULL, `LastAccessDate` DATETIME NULL DEFAULT NULL, `WebsiteUrl` VARCHAR(255) NULL, `Location` VARCHAR(100) NULL, `AboutMe` TEXT NULL, `Views` INT(11) NULL DEFAULT NULL, `UpVotes` INT(11) NULL DEFAULT NULL, `DownVotes` INT(11) NULL DEFAULT NULL, `AccountId` BIGINT(20) NULL DEFAULT NULL, `ProfileImageUrl` VARCHAR(255) NULL, PRIMARY KEY (`Id`), INDEX `CreationDate` (`CreationDate`) ) COLLATE='utf8mb4_bin' ENGINE=InnoDB ;
| 数据库 | 表名 | 数量 | 量级 |
|---|---|---|---|
| math_stackexchange | users | 497023 | 十万级别 |
| math_stackexchange | comments | 4463392 | 百万级别 |
| stackoverflow | users | 9737247 | 接近千万级别 |
| stackoverflow | comments | 60915000 | 5 千万级别 |
单表查询
单表 Count
$ SELECT COUNT(0) FROM [表名]
| MySQL | TiDB | |
|---|---|---|
| math_stackexchange.users | 0.234 sec | 0.359 sec |
| math_stackexchange.comments | 1.031 sec | 0.625 sec |
| stackoverflow.users | 3.719 sec | 0.953 sec |
| stackoverflow.comments | 15.359 sec | 4.922 sec |
带索引
$ select count(0) from [表名] where CreationDate > '2017-01-01'
| MySQL | TiDB | |
|---|---|---|
| math_stackexchange.users | 0.063 sec | 0.219 sec |
| math_stackexchange.comments | 0.422 sec | 0.813 sec |
| stackoverflow.users | 0.922 sec | 1.312 sec |
| stackoverflow.comments | 2.891 sec | 1.437 sec |
无索引
$ select count(0) from math_stackexchange.users where views > 10 $ select count(0) from math_stackexchange.comments where score > 3 $ select count(0) from stackoverflow.users where views > 10 $ select count(0) from stackoverflow.comments where score > 3
| MySQL | TiDB | |
|---|---|---|
| math_stackexchange.users | 0.203 sec | 0.484 sec |
| math_stackexchange.comments | 2.219 sec | 1.297 sec |
| stackoverflow.users | 4.312 sec | 2.297 sec |
| stackoverflow.comments | 61.42 sec | 11.313 sec |
连表查询
$ select count(0) from math_stackexchange.comments as a join math_stackexchange.users as b on a.UserId = b.Id where a.CreationDate > '2017-01-01' and b.views > 10 $ select count(0) from stackoverflow.comments as a join stackoverflow.users as b on a.UserId = b.Id where a.CreationDate > '2017-01-01' and b.views > 10
| MySQL | TiDB | |
|---|---|---|
| math_stackexchange | 5.297 sec | 4.468 sec |
| stackoverflow | 180.55 sec | 27.515 sec |
小结
- 由于硬件所限,无法发挥 TiDB 比较好的性能。
- 在表数据量比较小的时候 MySQL 的速度其实是好于 TiDB 的。
- 因为 TiDB 组件之间需要网络传输 (这也是 TiDB 生产环境需要万兆网卡的原因)
- 对于小表数据 MySQL 会保存在缓存中
- TiDB 在大数据量上基本是是好于 MySQL (官方推荐表数据在 5000w 以上)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Android自动化测试入门(四)单元测试
- golang分层测试之http接口测试入门
- iOS 单元测试和 UI 测试快速入门
- Kali无线渗透测试入门
- Web测试入门——软件测试员必知的50个常见测试点
- [ Laravel从入门到精通 ] 测试系列 —— 在 Laravel 中基于 Dusk 实现浏览器自动化测试(一):快速入门
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning JavaScript
Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99
As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!