-
Access数据库并发极限的分析实验
网络 2014/11/4 10:26:18Access并发极限的分析
在写此文前,我做了一个小小的代码测试,通过这个小测试,终于解惑了我对access究竟支持的是怎样的并发和黄金4K的.ldb文件的概念。
这个测试很简单:
1:每Open打开一个Access链接后,我就让它Sleep100秒:就是打开就不关闭了。
2:开多个线程,同时去Open链接:模拟并发请求。
3:观看产生的.ldb文件:结论靠观察。
终于,我看到了一个直观的过程:
1:打开1个链接时,产生一个.ldb文件,而且这个.ldb文件大小是64个字节。
2:打开2个链接时,产生一个.ldb文件,而且这个.ldb文件大小是128个字节。
3:打开3个链接时,产生一个.ldb文件,而且这个.ldb文件大小是192个字节。
......省略......
4:打开64个链接,产生一个.ldb文件,而且这个.ldb文件大小正是黄金4K。
5:打开65个链接,报错了,再往后,全错了。
如果这是access单个数据库极限并发的答案,总结就是:
access最大支持同时打开64个链接,每个链接产生64个字节,看到黄金4K的.ldb文件,说明极限到了。
而且,这是一个数据库的极限,因此,你想获得更大的并发数,不是分表,而是分库。
以上是对一个数据库的最大极限测试,那会不会对数据库的单个表存在着最大极限并发?
带着些许疑问,我又把示例稍为改了一下,进行单表的最大并发测试:
1:产生64个线程,即同时打开最大的数据库并发链接。
2:每个链接,都内建死循环,while中不断的更新着同一条记录。
3:观看有没有异常产生,同时数据库记录是不是正常更新着。
终于,我又看到了一个直观的过程:
1:没有异常产生。
2:记录在正常被更新着。
如果这是access单个表极限并发的答案,总结就是:
access的单表并发处理机制,没有限制,当然,最大并发数仍取决单个数据库链接数的最大并发64。
PS:如果一个链接内,再开N个线程去更新,结论又会是怎样呢?这问题似乎不太重要,有需要知道的大伙自己写示例了。
写到这里,大伙能理解access了吧,你想象一下:
1:一个页面从上到下,那得open几个链接?当然,如果没忘了关链接,一般是顺序下来的算1个。
2:能支持同时并发打开几个页面呢?1个页面算1个,最大64个?是64个,但这个不是1秒,而是取决于1个页面的执行时间,如果你5秒打开1个页面,基本就是64/5=13了。
4:那些没完没了的搜索引擎,也是和正常用户一样不断的请求的,你别忘了?除却搜索引擎,你还剩下几个请求?如果同时来了6家搜索引擎,那就剩下13-6=7,也就是有8个人访问,你就挂了。
当然了,瞎扯扯就这么算并发,实际也没算的这么准。
所以,用access的基础策略是:
1:静态化:特别适合实时性不强的,一次生成终生不变的。
2:特别适合单用户的:因为就一个人发信息,不可能产生并发写问题,加上前面静态化,很合适。
3:特别情况-缓存技术:一般用access的都会弱化用户统计或文章统计,因为这个更新,意味着占用一个链接,多来几个也会挂,因此文章统计和用户访问统计,要么关闭,要么得花点心思动点手脚。
4:分库策略:能增加并发最大数,1个64,我用100个,就是64*100了,团结就是力量啊,当然这么大个军团,不好管理,需要一定的管理策略和算法。
5:其它的你自己想了......
阅读(997) 分享(0)
上一篇: 2015百度校招产品经理笔试题
下一篇: access和mssql并发量比较