系统中有1个计算需求,用到了1个临时表,做中间过度表.
即运算开始时候,在过度表插入需要运算的数据,运算完毕后,清除所有数据.
这个中间表,我目前用的是真实的TABAL.====我的问题!======
1.这种中间过度表,@TABLE(表变量),#TABLE(临时表),TABLE(真实表)哪个好?
2.因中间表运算数据量很大,日志涨的很快,请问怎样避免?每天4G.
3.大量这种操作,给数据库带来其他什么危害么?
即运算开始时候,在过度表插入需要运算的数据,运算完毕后,清除所有数据.
这个中间表,我目前用的是真实的TABAL.====我的问题!======
1.这种中间过度表,@TABLE(表变量),#TABLE(临时表),TABLE(真实表)哪个好?
2.因中间表运算数据量很大,日志涨的很快,请问怎样避免?每天4G.
3.大量这种操作,给数据库带来其他什么危害么?
解决方案 »
- 关于“telnet localhost:1433 不能打开到主机的连接, 在端口 23: 连接失败”问题
- 请教一个关于毫秒级日期格式的问题
- 想问一下,实现同一个功能我的两种方法哪个快一些呢,
- 想要这样的数据.
- 如何编写一个设计一个管理员和普通用户的数据库,管理员的权限多,普通用户的权限少。
- sql6.5中显示DateTime字段有的机器上是2005 2 1有的是 2005 二月 1?
- SQL数据库是不是要安装ms sql server才能用?
- 重金求子 查询 ,, ############# 100% 结贴
- 菜鳥問題﹐在線急等!如何獲得這個值﹖
- sql(想给你们200分)
- 帮忙写个sql语句,在线等哇
- 把数据库隔离等级改为快照的副作用?
2.因中间表运算数据量很大,日志涨的很快,请问怎样避免?每天4G.
3.大量这种操作,给数据库带来其他什么危害么?大量此操作,第一个造成的问题就是日志过大,(当然可以通过压缩,简单模式等方式减小),另外,如果使用临时表或表变量的话,可能造成缓存的压力。这个需要实测环境。
数据量如果大,建议时候后面两种,而后面两种的区别主要在一个是在tempdb,一个是在用户db,从性能上来说,实体表更好。但是要注意回收。注意表变量没有非聚集索引
2.因中间表运算数据量很大,日志涨的很快,请问怎样避免?每天4G.
日志快,可以加大日志备份的频率,切换大容量日志或者简单模式。
3.大量这种操作,给数据库带来其他什么危害么?
CRUD对存储过程可能造成频繁的重编译,因为基础表频繁改变,统计信息不准确。然后就是如果表特别是实体表,其信息存放到用户DB的系统表中,频繁更改不建的是一个好事。根据上面的原因,我建议使用局部临时表。
我就补充一个,,数据库是拿来读取的,不是拿来运算的,若高频率
请先考虑是否能在APP端进行缓存,然后定时一起提交到数据库
实表,在某些情况下不得已使用。
2, 表变量操作是不记日志的, 另外,可以考滤建立一个库,用简单事务恢复模式,用实表代替临时表,会写相对较少的日志。
并且,使用完后,显式删除表, 在删除表前可以先truncate table.
3, 无所谓危害, 除非你不用, 但是你的工作也就完不成。个见。
否则用临时表,至少对临时表产生的操作,不会记在数据库的LOG上对数据库来,有多少任务,就产生多少负荷不能说危害不危害
重点在于如何分派和有效率地完成任务。