免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3734 | 回复: 9
打印 上一主题 下一主题

【讨论中】如何知道大并发下的insert语句插入的顺序? [复制链接]

论坛徽章:
1
2015亚冠之本尤德科
日期:2015-06-05 17:25:48
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-23 15:40 |只看该作者 |倒序浏览
本帖最后由 cenalulu 于 2012-07-23 16:18 编辑

例如我对表t1,进行同一时刻插入500百条语句。

谁最先插入?

并发的情况是怎样的?

怎样做测试可以看到?

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
2 [报告]
发表于 2012-07-23 16:19 |只看该作者
mysqlslap

论坛徽章:
0
3 [报告]
发表于 2012-07-23 16:37 |只看该作者
在数据库   再并发也是先到先插

论坛徽章:
1
2015亚冠之本尤德科
日期:2015-06-05 17:25:48
4 [报告]
发表于 2012-07-23 16:49 |只看该作者
回复 2# cenalulu


    我使用了msyqlslap,看不出什么结果来。我打开了general log,观察也没有观察出来什么,以下是详细的结果。天资愚笨,实在举不出好例子来验证上面的顺序问题,我个人认为,应该还是跟算法中的进程有关,要是这样说的话,就是随机来的了。根据进程间的争用情况,平等条件下,谁都可能是第一个先到的。我的例子没有举好,反映不出效果,看样子得高手出马了。
   
     [root@localhost ~]# /usr/local/mysql55_20/bin/mysqlslap -uroot -S /data/mysqldata/3308/mysql.sock --create-schema=test --query="insert into t6 values(null,UNIX_TIMESTAMP(now()))" -v --concurrency=5 --iterations=2
Benchmark
        Average number of seconds to run all queries: 0.137 seconds
        Minimum number of seconds to run all queries: 0.093 seconds
        Maximum number of seconds to run all queries: 0.164 seconds
        Number of clients running queries: 5
        Average number of queries per client: 1


general log日志情况:
120723 12:44:06  1681 Connect   root@localhost on
                 1682 Connect   root@localhost on test
                 1682 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1682 Quit
                 1683 Connect   root@localhost on test
                 1683 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1683 Quit
                 1684 Connect   root@localhost on test
                 1684 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1684 Quit
                 1685 Connect   root@localhost on test
                 1685 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1685 Quit
                 1686 Connect   root@localhost on test
                 1686 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1686 Quit
                 1687 Connect   root@localhost on test
                 1687 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1687 Quit
                 1688 Connect   root@localhost on test
                 1688 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
120723 12:44:07  1688 Quit
                 1689 Connect   root@localhost on test
                 1689 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1689 Quit
                 1690 Connect   root@localhost on test
                 1690 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1690 Quit
                 1691 Connect   root@localhost on test
                 1691 Query     insert into t6 values(null,UNIX_TIMESTAMP(now()))
                 1681 Quit
                 1691 Quit



下面select出来的记录:

| 301 | 1343061846 |
| 303 | 1343061846 |
| 305 | 1343061846 |
| 307 | 1343061846 |
| 309 | 1343061846 |
| 311 | 1343061846 |
| 313 | 1343061846 |
| 315 | 1343061847 |
| 317 | 1343061847 |
| 319 | 1343061847 |
+-----+------------+
160 rows in set (0.00 sec)

   

论坛徽章:
0
5 [报告]
发表于 2012-07-23 17:04 |只看该作者
严格意义上的“同时”是不存在的,看cpu调度了。

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2012-07-23 18:00 |只看该作者
回复 4# zhangshengdong

操作系统没有绝对的并发,从网卡角度来说都是顺序收发包的,机械磁盘也是顺序进行读写请求的。
只是上下文的切换调度产生了所谓的并发。
   

论坛徽章:
1
2015亚冠之本尤德科
日期:2015-06-05 17:25:48
7 [报告]
发表于 2012-07-24 09:24 |只看该作者
回复 6# cenalulu


   按照这个意思来说,统一时刻出现了100条插入语句,就看cpu的调度来分析谁先插入了(当然还有网络因素和磁盘io的因素),我可以这么理解吗?

论坛徽章:
1
2015亚冠之本尤德科
日期:2015-06-05 17:25:48
8 [报告]
发表于 2012-07-24 09:25 |只看该作者
回复 5# horizonhyg


    of course,没有意义上"同时",肯定是按照mysql中的调度算法,来分配mysql的插入语句的

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
9 [报告]
发表于 2012-07-24 09:41 |只看该作者
回复 7# zhangshengdong


    没错~

论坛徽章:
0
10 [报告]
发表于 2012-07-25 23:20 |只看该作者
同意,插入都是按执行顺序打
zhangshengdong 发表于 2012-07-23 16:49
回复 2# cenalulu
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP