zoukankan      html  css  js  c++  java
  • SQL Ce 4 & SQL Server 2008 & MySql5 简单性能测试

    最近一个项目快整完了,闲来无事,想研究一下内存数据库。

    但传说中的内存数据库大都跑在Linux/Unix下,一时候整不来,于是想在此之前多了解一下手里有的几种数据库的性能表现,方便在后面整内存数据库时好做个对比。

    于是写了个简单的程序,通过对数据库做最简单的Create,Select,Update,Delete操作来测以下几个数据库:

    1,SQLServer 2008R2

    2,SQL Compact 4.0

    3,SQL Server Express 2008R2

    4,MySql 5

    5,SQLite 3

    但最后SQLExpress,SQLite被踢出去了。原因是:经测试发现SQLExpress比起SQLServer性能差太远,我也不清楚具体差在啥地方,还是直接测SQLServer比较有代表性;SQLite在Win7 x64及net 4.0下支持不好,达不到我最近一个计划要求(其实我是想测SQLite的内存数据库特性…)。

    系统环境:

    Windows 2008 R2

    .NET 4.0

    硬件环境:都一样,数据库全装在同一台VMware虚拟机上。 :)

    测试流程:

    1,先初始化数据库。清除表数据,创建表,添加索引等。

    2,向所有数据库创建n条数据,各数据库的数据创建时是一样的(数量一样,记录内容一样)。

    3,做n次Select操作,条件随机。

    4,做n次Update操作,更新内容随机。

    5,做n次Delete操作,删除条件随机。

    *不做SQL Compact的多线程测试,原因不说大家也明白。

    当n=10000时:

    ============================

    SQLCe 测试 单线程
    测试类型:STDBDataTest
    Create   799ms
    Select   896ms
    Update   1870ms
    Delete   1480ms


    SQLServer 测试  单线程
    测试类型:STDBDataTest
    Create   4141ms
    Select   1338ms
    Update   4006ms
    Delete   3626ms


    SQLServer 测试  多用户并发
    测试类型:MTDBDataTest   数据量:10000
    Create   897ms
    Select   339ms
    Update   802ms
    Delete   563ms


    MySql 测试  单线程
    测试类型:STDBDataTest
    Create   5549ms
    Select   1532ms
    Update   6145ms
    Delete   5894ms


    MySql 测试  多用户并发
    测试类型:MTDBDataTest   数据量:10000
    Create   2348ms
    Select   926ms
    Update   2094ms
    Delete   1478ms

    ============================

    数据库 时间(ms) 系数
    SQLCe-单线程 5045 1.94
    SQLServer-单线程 13111 5.04
    SQLServer-并发 2601 1.00
    MySQL-单线程 19120 7.35
    MySQL-并发 6846 2.63

    *值越小越好

    ============================

    综合以上数据看,在1万条数据的小小压力测试下,冠军:SQLServer(并发),亚军:SQL Compact(单线程)

    最强Create奖:SQL Compact

    最强Select奖:SQLServer

    最强Update奖:SQLServer

    最强Delete奖:SQLServer

    MySQL在多用户并发情况下竟然还能输给SQL Compact,这很让人不解,估计是我自己没优化好(其实我哪个数据库都没优化,安装完成后的默认配置),再说我也不清楚上哪优化去:)

    SQL Compact的成绩的确让人眼前一亮,于是我想,要是整个“分布式”(N个库N并发)的SQL Compact程序,那上面的结果会不会直接被SQL Compact秒掉。。。。这还真有可能。但别忘了,SQLServer有个SSIS,这东西可以1秒数万至数十万条数据地处理,但这已经不是这次测试的范围内了。

    最后测一下n=100W时是啥情况,但,5个测试,要做1600W次操作…..。。。。等了许久,洗澡完还没跑完。。最后快跑完的时候被我一个误操作把结果给丢失了(唉,以后有钱换台更NB的台式机!),但结果和1万的情况一样,多数程并发访问下的SQLServer依然是最强的,最悲剧的竟然是MySQL,在100W级并发操作下Select表现极为悲壮,比所有单线程测试结果还差上很多,原因是啥?

    嘿,不管了,休息先。

    n=300000

    ==========================

    SQLCe 测试 单线程
    测试类型:STDBDataTest
    Create   24246ms
    Select   25311ms
    Update   70300ms
    Delete   46803ms


    SQLServer 测试  单线程
    测试类型:STDBDataTest
    Create   120015ms
    Select   45514ms
    Update   112269ms
    Delete   112491ms


    SQLServer 测试  多用户并发
    测试类型:MTDBDataTest   数据量:300000
    Create   26918ms
    Select   10979ms
    Update   21057ms
    Delete   14445ms


    MySql 测试  单线程
    测试类型:STDBDataTest
    Create   170734ms
    Select   46444ms
    Update   187352ms
    Delete   177960ms


    MySql测试  多用户并发
    测试类型:MTDBDataTest   数据量:300000
    Create   45990ms
    Select   168430ms
    Update   72976ms
    Delete   43711ms

    =========================

    数据库 时间(ms) 系数
    SQLCe-单线程 166660 2.27
    SQLServer-单线程 390289 5.32
    SQLServer-并发 73399 1.00
    MySQL-单线程 582490 7.94
    MySQL-并发 331107 4.51

    *值越小越好

    ==========================

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/bcszz/p/2650085.html
Copyright © 2011-2022 走看看