SQL2005消耗CPU,求优化方案。请教达人

MaWenDong 2018-03-14 10:59:52
环境情况:WEB和SQL在同一个服务器,2000台(后期在5000台)设备请求服务器WEB程序(WEB程序访问SQL Server【与web服务器本机】),单台最快的请求间隔1秒一次。(通过设置间隔时间2-3秒火更高就会缓解,CPU消耗的问题。)

出现的问题:导致CPU100%,SQL执行事件太多太频繁,通过【SQL Server Profiler】工具分析,没有耗时高的语句,全是简单的语句查询和联合语句。暂且不考虑WEB程序效率的隐私,单说SQL Server如何优化。

目前的服务器是虚拟VPS,E5-2620, 内存3G。将WEB服务和SQL服务分离,我觉得获取可以解决暂时的消耗问题,等到我设备增加又会出现现在的问题。

可否有SQL多服务器运行的方案那?或者其它?
...全文
894 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MaWenDong 2018-03-16
  • 打赏
  • 举报
回复
USE [smartadmin]
GO
/****** 对象:  Table [dbo].[smartadmin_data]    脚本日期: 03/16/2018 22:09:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[smartadmin_data](
[id] [int] IDENTITY(1,1) NOT NULL,
[Device] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Device_ID] [int] NOT NULL,
[Device_Property] [int] NOT NULL,
[project_ID] [int] NOT NULL,
[username] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[password] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[email] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[gameRegion] [int] NOT NULL,
[gameServer] [int] NOT NULL,
[character] [int] NULL,
[characterName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Status] [int] NOT NULL CONSTRAINT [DF_smartadmin_data_Status]  DEFAULT ((0)),
[FirstTime] [datetime] NOT NULL,
[FirstIP] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[RequestTime] [datetime] NOT NULL,
[RequestIP] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[Switch] [int] NULL,
[SwitchTime] [datetime] NULL,
[SwitchIP] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[gold] [int] NULL,
[diamond] [int] NULL,
[silver] [int] NULL,
[servers] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[descriptions] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[useDeviceID] [int] NULL,
[sell] [int] NULL,
[sellTime] [datetime] NULL,
[sellIP] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[sellDeviceID] [int] NULL,
[Processing] [int] NULL,
[Client] [int] NULL,
 CONSTRAINT [PK__smartadmin_data] PRIMARY KEY CLUSTERED 
(
[id] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
MaWenDong 2018-03-16
  • 打赏
  • 举报
回复
引用 3 楼 yenange 的回复:
3GB内存, DB服务器和WEB服务器混用, 还有每秒几千次的请求, 这个本身就太不合理了, 典型的又要马儿跑又要马儿不吃草。 先把WEB和DB分开吧, 压力大的情况下DB必须单独一台机, DB服务器内存加到 4GB 以上再说。 另外, 把你常用语句贴出来, 把你的表结构、数据量 也贴一下。
我正在实施中,先分离
Q315054403 2018-03-15
  • 打赏
  • 举报
回复
得看是什么数据特点、量级,每秒几千次访问对SQL SERVER来说是很正常的,主要还是看每次的负荷(IO量、运算量)有多大
zjcxc 2018-03-15
  • 打赏
  • 举报
回复
:WEB和SQL在同一个服务器 ------------------ 确认 CPU 是 SQL Server 而不是 WEB 或共同导致的? 你写的是“ 台最快的请求间隔1秒一次 ” 这个请求是什么请求? WEB 请求? 如果是,那么一个 WEB 请求对应多少 DB 请求?你的 DB 请求每秒是多少?(这个可以简单的从 ssms 中的活动监视器可以拿到这个数据)
删库到跑路 2018-03-15
  • 打赏
  • 举报
回复
我觉得,还是先把硬件升一下
二月十六 2018-03-15
  • 打赏
  • 举报
回复
没有一劳永逸,问题都是一步一步解决的,到什么时候用什么方法。 先将web和数据库分离,内容3G有点难,加到16G试试,支撑不住了在考虑其他方案
吉普赛的歌 2018-03-15
  • 打赏
  • 举报
回复
3GB内存, DB服务器和WEB服务器混用, 还有每秒几千次的请求, 这个本身就太不合理了, 典型的又要马儿跑又要马儿不吃草。 先把WEB和DB分开吧, 压力大的情况下DB必须单独一台机, DB服务器内存加到 4GB 以上再说。 另外, 把你常用语句贴出来, 把你的表结构、数据量 也贴一下。
  • 打赏
  • 举报
回复
访问最多的部分 适当的可以进行固化
zheninchangjiang 2018-03-15
  • 打赏
  • 举报
回复
凭感觉吧 使用频率最高的表,对于条件语句中使用的列,是否可以索引优化 联合查询的表,是否可以索引优化; 语句是否可以重新组织

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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