none
sqlserver与mysql的insert对比 RRS feed

  • 问题

  • 简单地将sqlserver与mysql的insert进行了对比,循环插入5万次,每次都commit,如下:

    1、mysql innodb_flush_log_at_trx_commit参数 设置为1,每次都会写硬盘,属于高安全模式,每秒插入只有几十条

    2、mysql innodb_flush_log_at_trx_commit参数 设置为2,缓冲再写入硬盘,6.5秒插入5万条

    3、mysql使用myisam引擎,2.2秒插入5万条

    4、sqlserver不启用延迟持久化,每秒至少1500条以上,如果启用延迟持久化,5万条只需要2--3秒

    总结:在高安全模式下,SQLSERVER占有绝对的优势,mysql每秒只有几十条,我觉得太不可思议了,淘宝居然还大量使用,我觉得淘宝始终在以某种风险,如:数据允许丢失、商品超卖等代价换取性能上的缺陷

    2015年4月28日 7:57

答案

  • 数据允许丢失,你说对了,他们是允许数据丢失的

    商品超卖不会,他们有保证机制


    Love SQL


    很遗憾的是,保证机制不总是work。去年双11还是双12就听说有商家出过问题。

    想不想时已是想,不如不想都不想。

    • 已标记为答案 wanyongwy 2015年6月16日 6:28
    2015年4月28日 14:07
    版主

全部回复

  • 数据允许丢失,你说对了,他们是允许数据丢失的

    商品超卖不会,他们有保证机制


    Love SQL

    2015年4月28日 8:53
  • 数据允许丢失,你说对了,他们是允许数据丢失的

    商品超卖不会,他们有保证机制


    Love SQL


    很遗憾的是,保证机制不总是work。去年双11还是双12就听说有商家出过问题。

    想不想时已是想,不如不想都不想。

    • 已标记为答案 wanyongwy 2015年6月16日 6:28
    2015年4月28日 14:07
    版主
  • mysql这个缓冲设置而且是针对整个实例的,不能像sqlserver2014那样可以针对某个数据表,那么mysql也许不能用于非常严格的数据环境,除非硬件级别能够100%的保证

    但是如果不设置缓冲,mysql这个插入性能实在是太慢了,当然,一次性提交多条SQL也是一个方法,这样必定增加程序难度以及客户端用户的体验

    阿里即使修改源码,我估计也不能绕过这个缺陷吧!

    但是可惜的是,现在很多企业都在追捧mysql 特别是天猫的双十一一吹捧,更加无敌了!


    2015年4月29日 1:13
  • 主要还是和Money有关吧
    2015年4月29日 1:24
  • 局外人能够知道多少呢??

    Love SQL

    2015年4月29日 1:44
  • 好久不来论坛了,这个话题倒是很有意思,这个论题很好,但是有几点值得商榷

    1.使用的是mysql什么版本?毕竟现在使用官方版的不多

    2.淘宝现在的版本是定制修改了一些代码+hbase,不是简单的web+db的形式

    3.myql使用group commit+thread pool 速度不至于这么慢

    2015年7月8日 15:06