免费注册 查看新帖 |

Chinaunix

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

借SYBASE宝地,问一个并发问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-18 03:01 |只看该作者 |倒序浏览
如题:sqlserver如何设置,可以允许读写并发执行

如果SQLSERVER如果某张表正在被写,那么我们select该表的时候,就会被阻塞,这个问题有没有解决方法

像ORACLE那样,写的时候,不会影响SELECT的执行。

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
2 [报告]
发表于 2012-12-18 20:53 |只看该作者
isolation level

论坛徽章:
0
3 [报告]
发表于 2012-12-20 10:07 |只看该作者
当然可以,不然Sybase怎么能在Wall Street占统治地位。
首先你的表要用datarows locking;其次写操作一定要用小批量(small batch size)。只有读写同一条记录时,才会出现blocking,但时间极其极其短暂,根本不会影响系统性能。
Oracle的MVCC/non-blocking是以牺牲transaction性能为代价的,一条transaction至少要写到两个地方。Sybase只写syslogs,这是Sybase OLTP性能高的主要原因之一,当然Sybase ASE logging subsystem非常出色的设计也是性能高的主要原因。

论坛徽章:
0
4 [报告]
发表于 2012-12-20 10:42 |只看该作者
自己去看数据库锁机制。SQL Server本身支持4种锁。除非你把锁设定到最严格的纯串行,不然不会有这种情况出现。

论坛徽章:
0
5 [报告]
发表于 2012-12-20 11:23 |只看该作者
本帖最后由 2BeSybPro 于 2012-12-20 11:25 编辑

Code写得不好,会出现读写阻塞的情况,即便你用缺省的isolation level "read committed"。
这是因为Sybase和MS SQL有lock escalation,在缺省设置下,更改超过200 rows or pages,行级/页级锁就会升级成表锁而阻塞其他processes读写,这在Sybase初级开发者中经常发生,详细信息请看lock promotion HWM。
大事务也容易导致日志空间满或tempdb满,一定要记住在Sybase ASE中commit your transactions as soon as possible,这也会提高replication server的性能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP