社区
MS-SQL Server
帖子详情
数据量过大时 使用事务会锁住表 其他用户无法操作 求解决方案
Hi幸福来敲门
2012-09-13 11:56:37
1.用户多,最少百万级
2.数据量庞大,百万级数据量搜索
3.操作多,同时或时间很短出现两个用户对表操作,另一个用户无法操作
4.在一个用户执行事务只要实现其他用户对表的插入和更新就行
5.我恨啊 CSDN有Bug 刚刚我在发帖的时候 选其他数据库 [其他数据库开发/MySQL/Postgresql] 发的帖子看不成 老是报 404
可是我的100分就这样被扣了 没分了 相信大家不会介意的 谢谢
...全文
934
10
打赏
收藏
数据量过大时 使用事务会锁住表 其他用户无法操作 求解决方案
1.用户多,最少百万级 2.数据量庞大,百万级数据量搜索 3.操作多,同时或时间很短出现两个用户对表操作,另一个用户无法操作 4.在一个用户执行事务只要实现其他用户对表的插入和更新就行 5.我恨啊 CSDN有Bug 刚刚我在发帖的时候 选其他数据库 [其他数据库开发/MySQL/Postgresql] 发的帖子看不成 老是报 404 可是我的100分就这样被扣了 没分了 相信大家不会介意的 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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怎么办啊?
关于
数据
操作
事务
引起的解、锁
表
的问题
----2009/04/13群聊天记录整理 (L)Scarlett (959723649)2009-04-13 13:53:59 跟新A
表
的
时
候 需要将部分跟新的
数据
跟新到B
表
。A 设置一个触发器 它执行的
时
候更新B
表
但是如果跟新A
表
的人不提交 那么B这个
时
候就被Row-X (SX)锁
锁住
了!造成其他跟新B
表
的人不能跟新 处于等待怎么样避免这个问题 我不能要
求
跟新
大
表
执行DDL需要注意什么?
操作
时
,需要特别小心,因为大
表
通常包含大量
数据
,执行 DDL
操作
可能
会
导致严重的性能问题、长
时
间的锁定,甚至对
数据
库的可用性产生影响。为了避免这些问题,可以采取一些预防措施和优化策略。
Mysql大
表
加索引
最近大后台查看一些
数据
统计的
时
候,很慢,甚至
会
有超
时
情况,前端设置的超
时
时
间是20秒。 后来通过查看日志和慢查询,发现一条sql语句执行
时
间超过18秒,基本都19秒左右。 大
表
加索引 select (*) from tb_name where create_time > xxx; 最终得知是因为这个
表
数据
行数已经超过 一千万了,然后create_time字段又没有索引 。 那解决办法肯定是加索引喽。 但是这个
表
是一直在线上运行,很重要和业务部分。如果给千万级的大
表
在线加索引 ,肯定
会
卡...
【互联网之常见】-大
表
新增字段有哪些方法
选择哪种方法取决于多个因素,包括
数据
库类型、系统负载、业务需
求
以及维护窗口。在进行此类
操作
时
,强烈建议在测试环境中先进行测试,评估
操作
对性能的影响,并确保有完整的
数据
备份和回滚计划。此外,最好在业务低峰
时
段进行此类
操作
,以减少对业务的影响。当你需要在MySQL大
表
上添加字段
时
,以下是一些最佳实践:1. **评估影响**:在生产环境中执行之前,应该在测试环境中模拟
操作
,评估其对性能的影响和所需
时
间。2. **备份
数据
**:在进行结构变更之前,确保有完整的
数据
备份,以便在
操作
失败
时
能够恢复
数据
。
MS-SQL Server
34,876
社区成员
254,639
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章