我写了两个:
1、select * from (select *,ROW_NUMBER() OVER(ORDER BY ID Asc) AS 'rownumber' from ProductInfo) T
where T.rownumber between beginrecord and endrecord
2、select top(20) * from ProductInfo
where (id not in (select top(20*(pageIndex-1)) ID from ProductInfo order by ID))
order by ID Asc
我发现 数据库 一大。同时访问的人多 ,很耗性能,
请问 大家有 更改 的 办法没有
10 个解决方案
#1
id上有索引吧。还有动态的尽量用
exec sp_executesql
exec sp_executesql
#2
select top 20 * from productinfo where id>
(select max(id) from
(select top (20*(pageIndex-1)) ID from ProductInfo order by ID)a)
order by id
--将id设置为主键。
#3
没有 明白什么 意思
#4
不知道你们的服务器每秒有多少个读取请求。
立竿见影的办法,如果还没有做的话,叫DBA把数据库复制8个。
另:分页一般是需要app里cache结果才能达到最佳效果的,光靠数据库不是最好的办法。
立竿见影的办法,如果还没有做的话,叫DBA把数据库复制8个。
另:分页一般是需要app里cache结果才能达到最佳效果的,光靠数据库不是最好的办法。
#5
to geliph
你说的我没有明白。
数据读取相当频繁,一秒钟有200-500个查询请求,这样该如何处理,请高人指点啊
你说的我没有明白。
数据读取相当频繁,一秒钟有200-500个查询请求,这样该如何处理,请高人指点啊
#6
把这个数据库复制到8个服务器上,其中分出4个专门处理有关分页的查询,另四个处理别的查询。这是做到数据库的分工。
同时检查App里的cache,根据实际情况调节cache的时间。.net就可以很方便的做了。这是保证不让所有的请求都直接变成最昂贵的数据库请求。但很多大公司都有专门的cache系统,把最近100来天的查询都放到内存里了。
你的情况现在只有20万的数据,只是分页查询请求很多,我猜是你们的App没用上cache的问题,不知道是不是?你设个10分钟试试看。
同时检查App里的cache,根据实际情况调节cache的时间。.net就可以很方便的做了。这是保证不让所有的请求都直接变成最昂贵的数据库请求。但很多大公司都有专门的cache系统,把最近100来天的查询都放到内存里了。
你的情况现在只有20万的数据,只是分页查询请求很多,我猜是你们的App没用上cache的问题,不知道是不是?你设个10分钟试试看。
#7
我的程序是 socekt 服务,接到请求查询数据 然后返回给各个客户端
#8
在socket服务里写个堆栈,把10分钟内的请求和结果全cache起来。
就算cache 1分钟,你的整个系统性能也会大幅提升。
事实上,只要不是real time的都可以cache,而real time的数据又需要加锁防止修改的,所以完全没有必要每个请求都去查数据库。
不知道你们的架构师是怎么设计的。应该有个cost per call的调查和计划。
就算cache 1分钟,你的整个系统性能也会大幅提升。
事实上,只要不是real time的都可以cache,而real time的数据又需要加锁防止修改的,所以完全没有必要每个请求都去查数据库。
不知道你们的架构师是怎么设计的。应该有个cost per call的调查和计划。
#9
我的数据是时时进入的,然后他们可以马上查询的到。不知道你有什么联系方式能不能提供下,私下交流下。等你消息,然后揭贴
#10
#1
id上有索引吧。还有动态的尽量用
exec sp_executesql
exec sp_executesql
#2
select top 20 * from productinfo where id>
(select max(id) from
(select top (20*(pageIndex-1)) ID from ProductInfo order by ID)a)
order by id
--将id设置为主键。
#3
没有 明白什么 意思
#4
不知道你们的服务器每秒有多少个读取请求。
立竿见影的办法,如果还没有做的话,叫DBA把数据库复制8个。
另:分页一般是需要app里cache结果才能达到最佳效果的,光靠数据库不是最好的办法。
立竿见影的办法,如果还没有做的话,叫DBA把数据库复制8个。
另:分页一般是需要app里cache结果才能达到最佳效果的,光靠数据库不是最好的办法。
#5
to geliph
你说的我没有明白。
数据读取相当频繁,一秒钟有200-500个查询请求,这样该如何处理,请高人指点啊
你说的我没有明白。
数据读取相当频繁,一秒钟有200-500个查询请求,这样该如何处理,请高人指点啊
#6
把这个数据库复制到8个服务器上,其中分出4个专门处理有关分页的查询,另四个处理别的查询。这是做到数据库的分工。
同时检查App里的cache,根据实际情况调节cache的时间。.net就可以很方便的做了。这是保证不让所有的请求都直接变成最昂贵的数据库请求。但很多大公司都有专门的cache系统,把最近100来天的查询都放到内存里了。
你的情况现在只有20万的数据,只是分页查询请求很多,我猜是你们的App没用上cache的问题,不知道是不是?你设个10分钟试试看。
同时检查App里的cache,根据实际情况调节cache的时间。.net就可以很方便的做了。这是保证不让所有的请求都直接变成最昂贵的数据库请求。但很多大公司都有专门的cache系统,把最近100来天的查询都放到内存里了。
你的情况现在只有20万的数据,只是分页查询请求很多,我猜是你们的App没用上cache的问题,不知道是不是?你设个10分钟试试看。
#7
我的程序是 socekt 服务,接到请求查询数据 然后返回给各个客户端
#8
在socket服务里写个堆栈,把10分钟内的请求和结果全cache起来。
就算cache 1分钟,你的整个系统性能也会大幅提升。
事实上,只要不是real time的都可以cache,而real time的数据又需要加锁防止修改的,所以完全没有必要每个请求都去查数据库。
不知道你们的架构师是怎么设计的。应该有个cost per call的调查和计划。
就算cache 1分钟,你的整个系统性能也会大幅提升。
事实上,只要不是real time的都可以cache,而real time的数据又需要加锁防止修改的,所以完全没有必要每个请求都去查数据库。
不知道你们的架构师是怎么设计的。应该有个cost per call的调查和计划。
#9
我的数据是时时进入的,然后他们可以马上查询的到。不知道你有什么联系方式能不能提供下,私下交流下。等你消息,然后揭贴