SQL Server 2000性能测试分析 sql 表最大记录数
操作系统:windows server 2003
CPU:Intel(R) Xeon(TM) CPU 3.00GHz,4核
内存:2G,主要运行MySQL服务
硬盘:cciss 37G
文件系统:NTFS,支持大文件
数据库版本:SQL Server 2000 sp3
网卡:100M
网络环境:100M交换局域网
测试方法
数据规模分为1万条、10万条、100万条和1000万条记录级别。
在每种数据规模下分别执行2000次随机查询,这样可以防止数据库直接从缓存中返回查询结果,更加接近真实的查询情况。以系统时间为随机种子,在现有的记录范围内随机执行查询操作。
查询类型分为:单表select、双表select、insert、update、delete。
每个执行条目都为单次查询的平均执行时间,单位为微妙。如果要看整体执行时间,则乘以2000即可。
由于脚本插入数据很慢,采用sql server客户端工具测试效率很低且不能保证足够的随机性,所以插入数据和测试性能都是自己编写相应的程序来完成。
开启二进制更新日志。
测试记录
测试数据
本地查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
295
2249
16292
2552
2681
10万条
302
134658
16406
2689
2790
100万条
524746
691188
16832
546313
501983
1000万条
49000000
103000000
16882
49100000
49100000
跨主机查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
986
3143
16431
3608
3497
10万条
1076
125462
17248
4087
3825
100万条
525524
709991
17514
552526
526370
1000万条
49002000
103003000
18882
49102000
49104000
到了千万条记录的规模,sql server查询及其缓慢,内存占用高达1.7G。
查询过于缓慢,导致测试效率极低,无法进行2000次随机查询,只能查询3次求平均值。
性能比较
由于百万和千万条的查询时间与1万和10万条悬殊过大,图例很难正常显示。
这里就只提供表格数据,以供比较参考。
SQL Server本地查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
295
2249
16292
2552
2681
10万条
302
134658
16406
2689
2790
100万条
524746
691188
16832
546313
501983
1000万条
49000000
103000000
16882
49100000
49100000
MySQL MyISAM引擎本地查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
178
247
694
141
170
10万条
195
271
705
157
186
100万条
3055
5164
746
4308
12373
1000万条
8665
15259
803
11033
17224
SQL Server跨主机查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
986
3143
16431
3608
3497
10万条
1076
125462
17248
4087
3825
100万条
525524
709991
17514
552526
526370
1000万条
49002000
103003000
18882
49102000
49104000
MySQL MyISAM引擎跨主机查询操作平均执行时间(单位:微秒) 项目记录数
单表select
双表select
insert
update
delete
1万条
358
484
1188
269
298
10万条
375
505
1227
283
322
100万条
3174
5293
1242
4142
7981
1000万条
12302
19920
1261
12355
20449
性能分析
1、 从图表看出,在普通PC服务器上,sql server在执行大规模100万条记录以上的查询效率就很低,到了1000万条规模业务几乎无法开展,单条查询都40多秒。
2、SQL Server插入数据性能受数据规模影响较小,这点与MySQL类似。
主要原因是,插入数据都是从尾部插入的,跟前面的数据规模关系更不大。
3、数据规模越大,MySQL和SQL Server性能差别就越大。
4、MySQL的性能随着数据规模增大线性递减,而SQL Server几乎是指数递减。
5、由于在MySQL 5.0以后MyISAM引擎和InnoDB引擎的性能差别不大,所以就选择了MyISAM引擎来和SQL Server来比较。
6、在低配置服务器和PC机上运行数据库,建议采用Linux加MySQL