扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇文章主要介绍“若干数据库数据插入性能的区别有哪些”,在日常操作中,相信很多人在若干数据库数据插入性能的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”若干数据库数据插入性能的区别有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联公司专注于企业全网整合营销推广、网站重做改版、肥城网站定制设计、自适应品牌网站建设、H5网站设计、商城建设、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为肥城等各大城市提供网站开发制作服务。测试环境如下:
服务器:本机(笔记本,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应该是选。而且在应用中还应该注意,尽可能把数据集中起来进行事务性数据写入,如此可以大大提升该数据库的性能。
到此,关于“若干数据库数据插入性能的区别有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流