数据量过大时 使用事务会锁住表 其他用户无法操作 求解决方案

Hi幸福来敲门 2012-09-13 11:56:37
1.用户多,最少百万级
2.数据量庞大,百万级数据量搜索
3.操作多,同时或时间很短出现两个用户对表操作,另一个用户无法操作
4.在一个用户执行事务只要实现其他用户对表的插入和更新就行



5.我恨啊 CSDN有Bug 刚刚我在发帖的时候 选其他数据库 [其他数据库开发/MySQL/Postgresql] 发的帖子看不成 老是报 404
可是我的100分就这样被扣了 没分了 相信大家不会介意的 谢谢
...全文
846 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-W 2012-09-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

3楼说的很好啊
我有三个问题啊
1.旧数据放到其他库中 新数据分区 会不会造成数据不同步 客户对旧数据偶尔也会去访问的
2.sql server 2008里面的 快照+同步复制能替代事务么? 会不会锁住数据或造成数据不同步
3.我找过资料 看过淘宝核心博客的一篇文章也是将很大的事务细分 通过中介表来判断提交还是回滚 软件这方面能减少依赖或者也细分事务么?
[/Quote]

1.用戶偶尔访问历史数据,你可以设置专门的查询历史数据的连接,当查询历史数据的时候就要重新设置连接,连到历史库查询资料。

2.2008里面的快照是不能访问的,在2008里面快照最大的作用是作为故障转移使用。如果说想实现读写分离,需要通过事务复制。或者通过其他中间件如Moebius。

3.淘宝開源的工具沒具體研究,無法定論。



Andy-W 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
1.用户多,最少百万级
2.数据量庞大,百万级数据量搜索
3.操作多,同时或时间很短出现两个用户对表操作,另一个用户无法操作
4.在一个用户执行事务只要实现其他用户对表的插入和更新就行



5.我恨啊 CSDN有Bug 刚刚我在发帖的时候 选其他数据库 [其他数据库开发/MySQL/Postgresql] 发的帖子看不成 老是报 404
可是我的100分就这样被扣了 没分了 ……
[/Quote]
1.用户多,最少百万级,可以考慮表分區,按某一時間段進行分區,對於歷史數據,可以考慮分庫,對歷史數據作归档。

2.数据量庞大,百万级数据量搜索,海量数据的搜索,必须考虑搜索引擎技术,如開源的Lucene,非常不錯的。當然可以考虑使用ms的全文搜索功能。

3.操作多,同时或时间很短出现两个用户对表操作,另一个用户无法操作。
可以考虑升级至sql 2005或以上版本,使用快照+同步复制实现读写分离。在sql 2012的快照可以直接读快照里面的内容,这样在一定业务需求范围内,快速满足我们的读写分离需求。

4.在一个用户执行事务只要实现其他用户对表的插入和更新就行

这句号有矛盾。事务要控制事务中的执行先后顺序保持一致,事务尽量短,对应一些不要求严谨的查询考虑允许脏读,这就要降低事务隔离级别,通常的做法是select 的时候不设置共享锁(nolock)实现。
發糞塗牆 2012-09-13
  • 打赏
  • 举报
回复
分开负载,把基本上只读的数据(如历史数据)分开表存放,或者使用分区,对一些查询,可以权衡使用表锁来获取更快的速度,使得锁持有时间更短。
中国风 2012-09-13
  • 打赏
  • 举报
回复
什么数据库?
如果是新增,要保留事务的短小

Oracle和SQL05以上版本,读表时可用快照隔离,不受新增的影响
Hi幸福来敲门 2012-09-13
  • 打赏
  • 举报
回复
3楼说的很好啊
我有三个问题啊
1.旧数据放到其他库中 新数据分区 会不会造成数据不同步 客户对旧数据偶尔也会去访问的
2.sql server 2008里面的 快照+同步复制能替代事务么? 会不会锁住数据或造成数据不同步
3.我找过资料 看过淘宝核心博客的一篇文章也是将很大的事务细分 通过中介表来判断提交还是回滚 软件这方面能减少依赖或者也细分事务么?
發糞塗牆 2012-09-13
  • 打赏
  • 举报
回复
分区在物理上是分开的,但是从sqlserver看来是一个表,2005以上才支持分区。在微软sqlserver2012广州发布会上,他们的DBA说过,给客户的意见是:3000万数据以上就要分区
Hi幸福来敲门 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

分开负载,把基本上只读的数据(如历史数据)分开表存放,或者使用分区,对一些查询,可以权衡使用表锁来获取更快的速度,使得锁持有时间更短。
[/Quote]

有一些数据是旧的 但有时客户也会去访问 不经常而已 分区能缓解大数据量么? 会不会造成数据不同步啊
Hi幸福来敲门 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

什么数据库?
如果是新增,要保留事务的短小

Oracle和SQL05以上版本,读表时可用快照隔离,不受新增的影响
[/Quote]

oracle 8i 和sql server 2008 sql用的少但也用 oracle怎么办啊?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧