首页 > 数据库 >数据库更新效率测试

数据库更新效率测试

时间:2023-09-14 19:44:48浏览次数:40  
标签:数据库 sw da Npgsql 测试 new dt dr 效率

有个项目记录采集点的实时数据(mysql5.7),约5000条记录,在C#的DataTable更新好后,一次性Update到表中,但速度非常慢要4分钟左右,但程序定时更新为5分钟,经常超时,也找不到好的办法,最后把这个表改为Memory引擎后速度提高到5秒左右,总算解决了问题。

因为此,在本机做了些测试,为以后的数据库选型做个准备,以下是测试结果:

  

 结论:

1. 无论插入还是更新,mssql是王者,更新5000条记录1s内解决。

2. 其他数据库的更新基本都在5s左右,差别不明显

3. 如果使用maridb或mysql等,使用Memory引擎做这种实时缓存是个很好的选择。

4. 在本机测试时,我把mysql57的内存参数调高,但效果不明显。

5. 生产机和我本机测试都是mysql5.7,但生产机的服务器明显不如我的PC机,无论InnoDB还是Memory引擎,未分析具体原因。

6. 对这些临时保存的数据,大量更新时不如全部删除,再插入,耗时只有1/10左右。

 

 

插入时代码示例:

//mssql转pgsql15.3
            //插入5000条为4997ms
            Stopwatch sw = new Stopwatch();
            sw.Start();
            string cnstr = @"server=.\sql2016;database=test;uid=sa;password=st#";
            string sql = "select * from aqgl_zy_position2023";
            SqlDataAdapter da = new SqlDataAdapter(sql, cnstr);
            DataTable dt = new DataTable();
            da.Fill(dt);

            foreach (DataRow dr in dt.Rows)
                dr.SetAdded();

            string cnstr1 = @"server=localhost;database=testdb;uid=postgres;password=st#";
             Npgsql.NpgsqlDataAdapter da2 = new Npgsql.NpgsqlDataAdapter(sql, cnstr1);
            Npgsql.NpgsqlCommandBuilder b = new Npgsql.NpgsqlCommandBuilder(da2);
            da2.Update(dt);
            long t1 = sw.ElapsedMilliseconds;
            this.textBox2.Text = t1.ToString();

 

更新时代码:

//UpdateBatchSize=0不支持
            //UpdateBatchSize=1时,513/5465
            //UpdateBatchSize=5001不支持
            Stopwatch sw = new Stopwatch();
            sw.Start();
            string cnstr = @"server=localhost;database=testdb;uid=postgres;password=st";
            string sql = "select * from aqgl_zy_position2023";
            Npgsql.NpgsqlDataAdapter da = new Npgsql.NpgsqlDataAdapter(sql, cnstr);
            DataTable dt = new DataTable();
            da.Fill(dt);
            long t1 = sw.ElapsedMilliseconds;
            foreach (DataRow dr in dt.Rows)
            {
                dr["mx"] = double.Parse(dr["mx"].ToString()) + 1;
                dr["my"] = double.Parse(dr["my"].ToString()) + 1;
            }

            Npgsql.NpgsqlCommandBuilder b = new Npgsql.NpgsqlCommandBuilder(da);
            //da.UpdateBatchSize = 0;
            this.textBox1.Text = da.UpdateBatchSize.ToString() + "/" + dt.Rows.Count;
            da.Update(dt);
            long t2 = sw.ElapsedMilliseconds;

            this.textBox2.Text = t1 + "/" + t2;

 

标签:数据库,sw,da,Npgsql,测试,new,dt,dr,效率
From: https://www.cnblogs.com/81/p/17703279.html

相关文章

  • crypto 加解密库简介与测试【GO 常用的库】
    〇、前言GO语言的标准库crypto提供了一组用于加密和解密的包,包括对称加密、哈希函数、数字签名、随机数生成等功能。在日常开发中,通过使用这些库,可以确保数据的安全性和完整性。对于使用频率比较高的东西,还是要汇总一下用来备查。一、md5加密md5包实现了RFC1321中定义......
  • 释放潜能!RunnerGo:性能测试的全新视角
    在数字化时代,性能测试已成为企业持续发展的关键一环。但面对繁杂的工具和流程,很多企业却陷入了无从选择的困境。现在,一款名为RunnerGo的全新性能测试工具正悄然崭露头角。RunnerGo,一款由国内开发者自主研发的全栈式性能测试平台,以其独特的视角和强大的功能,彻底改变了传统的性能测试......
  • 释放潜能!RunnerGo:性能测试的全新视角
    在数字化时代,性能测试已成为企业持续发展的关键一环。但面对繁杂的工具和流程,很多企业却陷入了无从选择的困境。现在,一款名为RunnerGo的全新性能测试工具正悄然崭露头角。RunnerGo,一款由国内开发者自主研发的全栈式性能测试平台,以其独特的视角和强大的功能,彻底改变了传统的性能测......
  • Llama2模型预训练,推理与微调测试
    官方环境要求(推理、微调):本次部署使用单卡A100-40G显卡。部署虚拟环境创建:condacreate-ntestpython=3.10.9condaactivatetest#启动虚拟环境拉取Llama2-Chinesegitclonehttps://github.com/FlagAlpha/Llama2-Chinese.gitcdLlama2-Chinese安装依赖库:pipinsta......
  • speex降噪算法移植及测试
    下载libspeexdspPC上,编译。修改内置demo输入in.pcm,输出out.pcm,用音频分析软件及实测效果OK.#ifdefHAVE_CONFIG_H#include"config.h"#endif#include"speex/speex_preprocess.h"#include<stdio.h>#defineNN160intmain(){  shortin[NN];  inti;  SpeexPre......
  • 软件测评中心测试项目及测试过程简析,CMA、CNAS软件测试报告获取
    软件测试是产品周期中必不可少的一步,可以更好的保障软件质量,那么我们所知的软件测评中心一般有哪些测试项目以及测试流程是如何?和小编一起往下看看吧!一、软件测评中心的测试项目1、功能测试:通过模拟用户使用场景,测试软件的各项功能是否正常、稳定。2、性能测试:通......
  • EasyCVR视频云融合平台在党政工作可以推动数字化能提高工作效率
    一、方案概述该平台具有海量的视频接入、汇聚与管理、处理及分发等视频能力。这意味着它可以轻松地处理大量的视频数据,从各种终端设备(如摄像头、移动设备等)采集、传输、存储和分析视频信息,并支持灵活的视频处理和分发功能。EasyCVR平台部署轻量简单,功能灵活多样。这表明该平台可以......
  • 1132 Cut Integer(附测试点浮点错误)
    题目:CuttinganintegermeanstocutaKdigitsloneintegerZintotwointegersof(K/2)digitslongintegersAandB.Forexample,aftercuttingZ=167334,wehaveA=167andB=334.ItisinterestingtoseethatZcanbedevidedbytheproductofAa......
  • 数据库发展
    一、历程    数据库发展至今已经有3代:    1、SQL:传统关系型数据库。例如Mysql,Oracle,SqlServer等;    2、noSQL:notonlySql。例如MongoDB,Redis等;    3、NewSQL:二、问题   【SQL】    问题:伴随互联网应用的用户规模,数据量都......
  • pytest单元测试框架
    单元测试有java:junit/testingpython:unittest/pytest 单元测试框架1.测试发现2.测试执行3.测试判断4.测试报告 一、pytest简介1.pytest是一个非常成熟的python的单元框架,比unittest更灵活。2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动......