求教分段存储的实现方法!

kinfee 2004-12-11 10:50:38
我准备要修改一个系统,该系统有两个使用频率很高的表,用了半年每个表大概30万条记录,记录不多,但访问频率很高。因为这两个表在使用高峰期会有大概50个客户端访问,而且有一半是用于查询,导致响应速度在某一个访问高峰期下降得很快,严重影响数据的前台录入操作。因为查询的数据一般是查询两天之前的数据,而修改更新删除的操作只对24小时内数据操作。所以打算改造数据库结构,以分段存储的方法实现。
实现分段存储我打算分48小时数据和往日数据两个数据库,因为这是一个收费系统,所以对于前台的录入速度要求很高,所以我想尽量把48小时数据库里的数据量减到最少,就是隔一段时间删除一部分数据。而往日数据库就是一个不能进行修改操作的数据库,就是只容许新增记录,不容许修改删除记录。
首要是要保证前台录入得速度和保证往日数据不被修改。sql的复制机制能不能实现?用sql的复制机制,还是用触发器,还是在数据录入的同时直接做多一次同样的修改更新删除操作,还是有别的更好的方法呢?
请各高手提供一个实现模型!谢谢!!
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-12-11
  • 打赏
  • 举报
回复
用发布/订阅也可以实现,配置稍微麻烦一点
zjcxc 2004-12-11
  • 打赏
  • 举报
回复
触发器在这里不适用,因为你的插入操作是频繁的,如果每次插入都要触发触发器去处理一些东西的话,那更影响了数据处理效率

一般来说,你的数据库不会24小时不断有人在使用吧? 应该是有一个空闲的时间吧? 把作业定义在这个相对空闲的时候里,一次性把历史数据转移到历史数据表,这样就可以解决你的问题了.
zjcxc 2004-12-11
  • 打赏
  • 举报
回复
用作业,实现数据的定时转移吧
kinfee 2004-12-11
  • 打赏
  • 举报
回复
呵呵!!怪不得我看来看去都看不明白!!但还是要谢谢你!!
zjcxc 2004-12-11
  • 打赏
  • 举报
回复
不好意思,发错帖,今天头晕了
zjcxc 2004-12-11
  • 打赏
  • 举报
回复
--参考这个处理示例

--得到最新编号的函数
create function f_newid()
returns char(7) --编号位数固定,用char的检索效率高于varchar
as
begin
declare @re char(7)
select @re=max(BHID) from 表
return(
case when @re is null then 'BH00001'
else 'BH'+right('0000'+cast(cast(right(@re,5) as int)+1 as varchar),5)
end)
end
go

--测试的表,表名与函数中的表名对应
create table 表(
BHID char(7) default dbo.f_newid() --设置默认值,自动生成编号
primary key, --设置成主键,防止编号冲突
-- constraint UNIQUE_BHID_表 unique, --如果用唯一约束,则删除上面的主键约束语句,改用此句
txt1 varchar(10),
txt2 varchar(10),
num float)
go

--插入的调用
declare @newbh char(7)
select @newbh=dbo.f_newid()
insert 表(BHID,txt1,txt2,num) values(@newbh,'aa','bb',1)
select 刚插入的编号值=@newbh

/*--插入数据时,就可以不理会编号字段,直接用这样的语句

多用户同时插入时,如果编号重复,就会有错误发生
此时,前台程序拦截错误,如果是违反约束的错误
只需要重新执行插入的语句即可,此时的编号会自动再重新生成
而重新执行插入语句也很方便,因为根本就不需要改语句

假如几个请求同时发生到达,f_newid()同时运行,取了同样id,会插入同样id?
约束会阻止此插入操作
前台程序拦截错误,客户重新执行插入的语句,有可能造成某客户长期等待危险
如果用表级锁,那客户的等待时间更长,而且影响正常的读表操作.
--*/
go
--删除测试
drop table 表
drop function f_newid

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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