文章目录
- Django数据库操作性能分析
- 一、数据库操作性能分析目的及思路
- 二、耗时分析统计代码
- 三、测试用例及结果
- 3.1、测试结果总览
- 3.2、MSSQL 对比
- 3.2.1、单表总记录 50W,查询 30W
- 3.2.2、单表总记录 50W,查询 50W
- 3.2.3、单表总记录 80W,查询 50W
- 3.2.4、单表总记录 80W,查询 80W
- 3.2.5、单表总记录 100W,查询 50W
- 3.2.6、单表总记录 100W,查询 80W
- 3.2.7、单表总记录 100W,查询 100W
- 3.2.8、单表总记录 150W,查询 50W
- 3.2.9、单表总记录 150W,查询 100W
- 3.2.10、单表总记录 150W,查询 150W
- 3.2.11、单表总记录 200W,查询 50W
- 3.2.12、单表总记录 200W,查询 100W
- 3.2.13、单表总记录 200W,查询 150W
- 3.2.14、单表总记录 200W,查询 200W
Django数据库操作性能分析
一、数据库操作性能分析目的及思路
目的:
了解 django 对数据库的处理性能与直接数据库中操作的性能之间差异,为后续优化提供参考。
思路:
1、目前仅对数据查询进行耗时统计分析。
2、单表查询耗时统计分析
3、多表关联查询耗时统计分析
4、django 对存储过程调用耗时统计分析
5、django 对 mssql 函数调用耗时统计分析
6、对查询耗时超过 10s 的多测几次,取平均数。
二、耗时分析统计代码
2.1、python 耗时统计代码
时间粒度:微秒
import datetime
startTime = datetime.datetime.now()
// 需统计耗时的代码区
endTime = datetime.datetime.now()
print('耗时: %s' %(endTime - startTime))
2.2、MSSQL 耗时统计代码
时间粒度:毫秒
DBCC DROPCLEANBUFFERS;
DBCC FREEPROCCACHE;
SET STATISTICS TIME ON;
SET STATISTICS IO ON;
SELECT * FROM dbo.dept_info;
2.3、MYSQL 耗时分析
TODO:
2.4、Django 耗时分析记录位置
三、测试用例及结果
数据批量插入代码
--MSSQL批量插入
DECLARE @dept_code VARCHAR(16),
@cnt INT,
@dept_name VARCHAR(16);
SET @cnt = 0;
WHILE @cnt < 500000
BEGIN
SET @cnt = @cnt + 1;
SET @dept_code = '10000000' + @cnt;
SET @dept_name = '部门' + @dept_code;
INSERT INTO dbo.dept_info
(
id,
dept_code,
dept_name,
update_time,
create_time
)
VALUES
(
NEWID(),
@dept_code,
@dept_name,
SYSDATETIME(),
SYSDATETIME()
);
END;
3.1、测试结果总览
耗时统计单位:秒
编号 | 测试场景 | MSSQL 耗时 | Django 耗时(MSSQL) | MySQL 耗时 | Django 耗时(MySQL) | 备注 |
---|---|---|---|---|---|---|
1 | 单表总记录 50W,查询 30W | 4.007 | 5.0814 | |||
2 | 单表总记录 50W,查询 50W | 6.192 | 8.0880 | |||
3 | 单表总记录 80W,查询 50W | 6.309 | 8.7925 | |||
4 | 单表总记录 80W,查询 80W | 9.936 | 12.7489 | |||
5 | 单表总记录 100W,查询 50W | 6.339 | 8.4627 | |||
6 | 单表总记录 100W,查询 80W | 10.541 | 13.0412 | |||
7 | 单表总记录 100W,查询 100W | 12.088 | 16.2925 | |||
8 | 单表总记录 150W,查询 50W | 6.817 | 9.6566 | |||
9 | 单表总记录 150W,查询 100W | 12.423 | 18.5073 | |||
10 | 单表总记录 150W,查询 150W | 18.114 | 24.7535 | |||
11 | 单表总记录 200W,查询 50W | 7.266 | 9.7276 | |||
12 | 单表总记录 200W,查询 100W | 12.681 | 17.6990 | |||
13 | 单表总记录 200W,查询 150W | 18.396 | 25.6291 | |||
14 | 单表总记录 200W,查询 200W | 24.157 | 33.4476 |