|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。一样平常情形下,假如我们在sqlserver中删除大批的数据后,数据库中的数据削减,那末应当提拔sqlserver的功能才对,可明天我们看一个案例,在这个案例中,情形是相反的,利用Delete删除大批数据后SQLServer功能下落的成绩。
成绩形貌:
1,利用delete删除大批数据后数据的功能下载。
2,本来一些存储历程的实行工夫为20分钟摆布,删除数据后实行工夫必要2-3个小时。
背景信息:
1,经由过程delete在数据库中删除大批的数据。
2,数据删除后,客户也举行了相干的保护事情,如重修索引,更新统计信息等。
3,功能变慢的存储历程是对表做良多的delete,insert,select的操纵。
成绩的查询拜访:
1,相干的表都是堆(heaptable)
2,这些表中并没有良多的数据
3,对表举行dbcccheckcontig扫描发明表很年夜,但页的密度(PageDensity)却很小
扫描数据以下:
DBCCSHOWCONTIG正在扫描……表...
表:……(7983405);索引ID:1,数据库ID:5
已实行TABLE级其余扫描。
-扫描页数................................:1
-扫描区数..............................:1
-区切换次数..............................:0
-每一个区的均匀页数........................:1.0
-扫描密度[最好计数:实践计数].......:100.00%[1:1]
-逻辑扫描碎片..................:0.00%
-区扫描碎片..................:0.00%
-每页的均匀可用字节数........................:7997.0
-均匀页密度(满).....................:1.20%
DBCCSHOWCONTIG正在扫描……表...
表:……(11667635);索引ID:1,数据库ID:5
已实行TABLE级其余扫描。
-扫描页数................................:1
-扫描区数..............................:1
-区切换次数..............................:0
-每一个区的均匀页数........................:1.0
-扫描密度[最好计数:实践计数].......:100.00%[1:1]
-逻辑扫描碎片..................:0.00%
-区扫描碎片..................:0.00%
-每页的均匀可用字节数........................:8025.0
-均匀页密度(满).....................:0.85%
成绩发生缘故原由:
1,当表上有会萃索引时,删除操纵会开释空页。但是,从堆中删除行时,数据库引擎可使用行锁定或页锁定举行操纵。了局,删除操纵招致的空页将持续分派给堆。未开释空页时,数据库中的其他工具将没法重用联系关系的空间。
2,固然表中没有大批数据,可是它们具有大批的几近为空的数据页。扫描表因而变得非常花工夫。
办理计划:
若要删除堆中的行并开释页,我们可使用以下办法中的一种。
1,在DELETE语句中指定TABLOCK提醒。利用TABLOCK命令会招致删除操纵猎取表的共享锁,而不是行锁或页锁。这将同意开释页。
2,假如要从表中删除一切行,可以使用TRUNCATETABLE取代Delete
3,删除行之前,请对堆创立会萃索引。删除行以后,能够删除会萃索引。与后面的办法比拟,此办法十分耗时,而且利用更多的一时资本。线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。 |
|