gpt4 book ai didi

关于若干数据库数据插入性能的对比分析

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 32 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章关于若干数据库数据插入性能的对比分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本地数据库接触不多,最早用过Access,但现在SQLite功能更加强大--而且,说实在的我不喜欢Access,连带着不喜欢SqlServer,只要一看到满眼的@号go号我就头晕不止;更何况有一个我感觉非常致命的问题:分页太麻烦!远不如mySql/SQLite中的limit或者Oracle中的rownum来得痛快.

平时基本使用Oracle,对它的性能知根知底了;mySql近年来混得风生水起,想必有过人之处,也一并纳入测试范围了.

另外,Access现在有2007版,不知道和2003版在性能上有什么区别没有?特意分开进行测试.

测试环境如下:

服务器:本机(笔记本,I3 370,8G内存) 。

操作系统:windows 7 x64 。

语言环境:C#,使用控制台程序测试.

虚拟机:安装SqlServer2008,2CPU,3G内存.

数据库:Oracle11g(本机数据库) 。

SQLite(本机文件) 。

MySql(版本5的绿色版) 。

SqlServer(不想在本机安装2008版本,本来想使用本机的学习版,但死活不行,只好在本机虚拟机上安装一个2008版本,测试性能有所下降,但也只好如此了) 。

Access(2003版) 。

Access(2007版) 。

测试方法:先生成10000条记录(每条记录6个字段),插入数据前先清除原有数据,

数据插入分为事务性写入(启动事务,逐条插入后提交)及非事务性写入(不启动事务,逐条插入).

SqlServer数据库在本地虚拟机的数据库中,数据不太准确;为消除网络操作影响,将代码移到虚拟中直接执行一次.

测试过程中发现了若干有趣的问题:

1.64位操作系统下,Access无法在编译为AnyCpu的程序下执行,必须编译为x86方可正常操作。(如果是网站,必须将池设置为启用32位兼容) 。

2.SQLite有64位版本的DLL,可以正常在64位环境(控制台程序)下运行;但很奇怪的是,如果是网站,则使用64位DLL反而无法正常运行,必须使用32位版本的DLL,并且将IIS的池设置为启用32位兼容才可正常运行.

3.Access的2003版本与2007版本的数据库连接串是不相同的,如下:

2003:@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\xxx\test.mdb",

2007:@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\xxx\test.accdb",

测试结果如下:

数据库类别 。

插入数量 。

本地事务(毫秒) 。

本地无事务(毫秒) 。

说明 。

每条记录耗时 。

每秒插入条数 。

每条记录耗时 。

每秒插入条数 。

Oracle 。

10000 。

0.23 。

4300 。

0.9 。

1103 。

本地数据库 。

Sqlite 。

10000 。

0.0998 。

10016 。

6.86 。

146 。

本地数据库 。

MySql 。

10000 。

0.2574 。

3884 。

4.132 。

241 。

本地数据库 。

Sql Server 。

10000 。

0.42 。

2380 。

1.52 。

654 。

远程数据库 。

Sql Server 。

10000 。

0.413 。

2418 。

1.433 。

697 。

本地数据库,2CPU,2G内存 代码直接在虚拟机运行 。

Access2003 。

10000 。

0.6 。

1664 。

46.87 。

21.33 。

本地数据库 。

Access2007 。

10000 。

0.73 。

1369 。

47.57 。

21.02 。

本地数据库 。

结果很有意思:

1.SQLite的事务插入速度最快,达到10000条每秒,但非事务性的插入速度就一般了.

2.Oracle作为数据库的老大,事务插入速度仅次于SQLite,但非事务性的插入速度居首.

3.可怜Access,不试不知道,一试吓一跳,事务插入最慢,非事务插入更慢;本来对Access2007还有点期待的,没想到它比2003版本的数据还差.

4.mySql还真是不赖,事务插入的性能仅次于Oracle,非事务性的插入没有那么强,但也还不错.

从数据来看,发觉一个比较有规律的现象:大型数据库与小型数据库、本地型数据库的区别,不在于事务性插入性能的高低,而在于非事务性插入性能的高低。Oracle最强,每秒达到1000条以上;其次是SqlServer,也有700条每秒;mySql相比之下就差多了,只达到240条每秒左右,这个性能整整差了一个等级;比较意外的是SQLite,非事务性插入性能虽然比mySql差一点,但也相差不大(不是数量级的差别);最糟糕的是Access,非事务数据插入性能惨不忍睹,和SQLite相比,整整差了一个数量级.

由上可见,如果选择本地数据库,SQLite应该是首选。而且在应用中还应该注意,尽可能把数据集中起来进行事务性数据写入,如此可以大大提升该数据库的性能.

最后此篇关于关于若干数据库数据插入性能的对比分析的文章就讲到这里了,如果你想了解更多关于关于若干数据库数据插入性能的对比分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com