Django数据库操作性能比对分析

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,查询 30W4.0075.0814
2单表总记录 50W,查询 50W6.1928.0880
3单表总记录 80W,查询 50W6.3098.7925
4单表总记录 80W,查询 80W9.93612.7489
5单表总记录 100W,查询 50W6.3398.4627
6单表总记录 100W,查询 80W10.54113.0412
7单表总记录 100W,查询 100W12.08816.2925
8单表总记录 150W,查询 50W6.8179.6566
9单表总记录 150W,查询 100W12.42318.5073
10单表总记录 150W,查询 150W18.11424.7535
11单表总记录 200W,查询 50W7.2669.7276
12单表总记录 200W,查询 100W12.68117.6990
13单表总记录 200W,查询 150W18.39625.6291
14单表总记录 200W,查询 200W24.15733.4476

image-20201031135820063

3.2、MSSQL 对比

3.2.1、单表总记录 50W,查询 30W

image-20201030140301515

3.2.2、单表总记录 50W,查询 50W

image-20201030140537247

3.2.3、单表总记录 80W,查询 50W

image-20201030140958752

3.2.4、单表总记录 80W,查询 80W

image-20201030141312849

3.2.5、单表总记录 100W,查询 50W

image-20201030142016372

3.2.6、单表总记录 100W,查询 80W

image-20201030142326959

3.2.7、单表总记录 100W,查询 100W

image-20201030141738084

3.2.8、单表总记录 150W,查询 50W

image-20201030142836186

3.2.9、单表总记录 150W,查询 100W

image-20201030143232253

3.2.10、单表总记录 150W,查询 150W

image-20201030143509077

3.2.11、单表总记录 200W,查询 50W

image-20201030143925350

3.2.12、单表总记录 200W,查询 100W

image-20201030144251306

3.2.13、单表总记录 200W,查询 150W

image-20201030144729632

3.2.14、单表总记录 200W,查询 200W

image-20201030145058598

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幻欢子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值