一、测试需求
结构化数据,大约每天3000万条数据,会频繁写入新信息,不存储特征值信息,可能存在查询全量历史结果。
二、需求分析
1、做单表写入测试,验证3000万条数据录入所需时时长。
2、建立索引,模拟人口信息表关多表关联查询,并验证当前数据库在此环境下可满足多少用户查询需求。
三、测试环境
硬件:普通笔记本电脑
测试软件:虚拟机、CentOS7.9 PostgreSQL14.9 pgbench
pgbench是PostgreSQL的压力和稳定性测试工具
四、测试过程
1、写入测试
1 登录数据库(略)
2 建表
create table cam ( id int, camid int, personid int, imgurl text, rectime timestamp );
复制
3 编辑写入数据语句
vi cam.sql insert into cam values(random()*10000, random()*10000, random()*10000, md5(random()::text), CURRENT_TIMESTAMP);
复制
4 压入数据执行
./pgbench -M prepared -n -r -P 1 -f ./cam.sql -c 50 -j 50 -T 1800
复制
5 查询
select pg_size_pretty(pg_relation_size('cam'));
复制
2、联合查询
1 建person表 ,用于联合查询
create table person (
id int,
personid int,
name text
);
复制
2 模拟数据
写person.sql
insert into person values (random()*10000,random()*10000,md5(random()::text));
复制
执行person.sql
./pgbench -M prepared -n -r -P 1 -f ./person.sql -c 50 -j 50 -T 10
复制
3 建索引,支持较大数据量下的查询性能
CREATE INDEX pindex ON cam(personid);
复制
4 查询语句写入sql.sql
select count(*) as abc from cam ,person where cam.personid = person.personid and ...
复制
(略,建议回归增加更多联合SQl语句);
5 压测,50并发
./pgbench -M prepared -n -r -P 1 -f ./sql.sql -c 50 -j 50 -T 300
复制
TPS:394
五、测试结论
入库时长:满足
TPS:17227,实测:3000万条数据耗时:29分钟,超出每天3000万录入预期;此外,产生数据量:2500MB,按此计算,保持一倍余量,年度最低硬盘容量应在2TB。
查询效率评估:满足
双表联合查询,其中一表数据3000万,建索引,50并发,TPS:394。可充分满足规模用户的查询应用。
最后修改时间:2023-08-23 23:44:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
目录