K/3 Cloud 数据中心实体过大问题分析及解决方案(一)
金蝶云社区-天冥异
天冥异
3人赞赏了该文章 1,064次浏览 未经作者许可,禁止转载编辑于2018年09月14日 16:54:14
  1. 概述
    在 K/3 Cloud 中, 当数据中心库由于长期没有合理维护或数据库参数设置不正确等原因导致数据文件越来越大时,通常会引起产品整体运行速度变慢的情况,影响用户体验。
    本文将主要对 K/3 Cloud 数据中心实体过大的问题进行分析讲解。

   2. 查看数据中心实体表空间使用情况
    打开 SQL Server 查询分析器, 选择要查看的数据库实体名称,执行如下语句(可复制):
------------------------------第一步:获取当前表空间使用的大小
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
create table tablespaceinfo --创建临时表
(nameinfo varchar(50) , --表名
rowsinfo int , --表中现有的行数
reserved varchar(20) , --表空间总量
datainfo varchar(20) , --表中数据的空间量
index_size varchar(20) , --表中索引使用的空间量
unused varchar(20) ) --表中未用的空间量


delete from tablespaceinfo
declare @tablename varchar(255)
declare @cmdsql varchar(500)
DECLARE Info_cursor CURSOR FOR


select name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsTable') = 1 and name not like N'#%%' order by name


OPEN Info_cursor
FETCH NEXT FROM Info_cursor
INTO @tablename
WHILE @@FETCH_STATUS = 0
BEGIN
if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id,N'IsUserTable')
= 1)


execute sp_executesql
N'insert into tablespaceinfo exec sp_spaceused @tbname',N'@tbname varchar(255)',@tbname = @tablename
FETCH NEXT FROM Info_cursor INTO @tablename
END
CLOSE Info_cursor
DEALLOCATE Info_cursor
GO
------------------------------------------------------------------------------
--第二步:查询表占用空间信息,并保存结果
select * from tablespaceinfo order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc
--------------------------------------------------------------------------------------------
执行后,可查看到具体各数据表的占用情况, 从高至低的排序。 一般情况下,数据库过大可能有两方面原因引起,一个是部分数据表占用空间大,另一个是临时表过多引起的。 下节将具体讲解,
注意: 操作前一定要先备份账套,以免出现误操作无法恢复;清除后对数据库做收缩的操作,释放空间。


3. 产生原因及解决方案
注意: 操作前一定要先备份账套,以免出现误操作无法恢复;清除后对数据库做收缩的操作,释放空间。


3.1 临时表总量过多
引起临时表总量过多的原因主要有以下几种:
1、 补丁安装过程中出现了数据异常,导致临时表数量暴增;
2、 Cloud 执行计划列表中的临时表清理任务未正常工作;
3、 Cloud 执行计划任务运行正常, 但临时表数量的增长速度超过了清理速度。
可以将执行计划列表是否正常运行当作不同类型的两种情况,由于执行计划列表的运行依赖于 K3CloudApp 站点, 所以执行计划运行不正常时需在 IIS 中确认站点是否正常运行,临时表清理任务是否正常运行及站点运行不正常的解决方案请参考《K3Cloud 执行计划列表无法正常运行的解决方案》。

图标赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!