先说一下,我也不懂怎么做数据库的基准测试或者说压力测试(Stress test),下面都是我个人的经验之谈。
随机数据的生成我使用Python完成,这样就有普遍性,因为大部分数据库都有Python接口。
快速生成随机数看这篇博客:Python 超快生成大量随机数的方法
随机字符串的生成参考这个问答:python - Random string generation with upper case letters and digits - Stack Overflow
我花了一晚上时间生成了800亿行数据,其中一行有2个uint32类型,1个uint8,一个uint16,共4个随机数,以及一个随机的时间。
少量随机数据可以到网上在线生成,比如说:
- Generate Test CSV or JSON Data
- Mockaroo - Random Data Generator and API Mocking Tool | JSON / CSV / SQL / Excel
- generatedata.com
- Database test data generator - Fill your database with random test data!
- Dummy data for MYSQL database
说明一下,我找到了一个工具:STSSoft/DatabaseBenchmark: Database Benchmark is one of the most powerfull open source tools designed to stress test databases with large data flows.
支持MySQL,MongoDB等多种数据库,但是不支持ClickHouse。
随后就是测试了,
先测最简单的select count语句,随着数据量的增加,时间消耗肯定会变大,最好以图的形式展示结果:
然后测 select group by 语句。
再测一下join语句,数据量从100万到1000万,1亿,逐步增加,看花费的时间跟CPU变化。
最后测一下多线程查询对查询时间的影响。
2019-8-21:看到一篇不错的文章:MySQL 快速创建千万级测试数据