很简单,使用杀毒软件清理磁盘。
在基本磁盘的前提下,Exchange有以下几种方法扩大磁盘空间:
1 通过Exchange归档 ,这是压缩邮箱大小同时又不删除任何数据的好办法,不过需要另一个邮箱数据库用作存储(这里不讨论PST归档)。当然服务器依旧会磁盘耗尽,然后你就需要买新的Exchange的License以满足空间规划需求。
2 通过使用多个数据库,Exchange 2013在性能及磁盘利用率上有很大提高。它给许多组织提供了将邮箱部署在廉价磁盘上的机会。
上述两点并没有完全满足Exchange服务器的磁盘需求。那么以下会讨论更加常用的方法:
a 通过删除所有数据库中的数据:最简单的办法当然是删数据,当然你会注意到删除公用文件夹以及邮箱数据后,数据库的大小并不会减少;你还需要执行离线碎片清理。当然离线碎片清理初始化阶段会要求Exchange创建一个临时数据库,这需要额外的空间。然后在清理过程中,主数据库副本会将数据拷贝到临时数据库。简单地说,整个过程中都需要额外的磁盘空间。离线碎片整理的命令如下:
ESEUTIL /D <数据库名>
b 通过调整恢复限制:另一个好办法是调整邮箱数据库限额,步骤如下:
1 打开EAC,选择左侧“服务器”标签,然后选择上方“数据库”标签页。
2 选择数据库,单击上方“编辑”图标,选择“限制”
3 在限制会话框中可以调整删除项目以及删除邮箱的保留天数,调整这些限制就可以获得一些临时空间。
c 通过更改数据库路径:在很多情况下,恢复磁盘空间最有效的办法莫过于调整数据库路径。尤其是在多个数据库的位置放在一个卷下的时候。你可以将数据库移至空闲磁盘来为当前磁盘腾出空间。
d 执行数据库维护模式:Exchange服务器会定期执行维护模式(通常在晚上)以保持数据库健康。
在一次维护中,系统主要执行了以下 *** 作:
1 数据库碎片整理
2 数据库检查点文件校验
3 页面修复(Page Patching)
4 页面清零(Page zeroing)
5 清理Dumpster(即缓存)
6 公用文件夹过期
7 被删除邮箱的空间释放
此外,由于维护过程经常会超时,你需要检查服务器日志来确定维护是不是已结束。如果你发现在计划的窗口中没有完成,你可能需要调整计划以确保维护过程有足够的时间。
注意:在在线碎片整理过程中,从数据库回收的碎片不会释放为磁盘空间,只有离线碎片整理会释放空间。
管理数据库主要做好以下3方面的内容:
一、数据库定期备份
首先利用数据库自带的命令行工具将数据库备份下来,然后将该文件以日期参量重命名。
数据库定期备份的原因:
1)、有些数据是随时变化的,备份可以记录某时间点的数据;
2)、如数据库故障,可以随时还原。
二、数据库优化
1)、进行sql语句的执行优化;
2)、减少应用和数据库的交互次数、同一个sql语句的执行次数;
3)、整理数据库实体的碎片(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次);
4)、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力(java处理批量数据不可取,尽量用c或者c进行处理,效率大大提升);
5)、对访问频繁的数据,充分利用数据库cache和应用的缓存;
6)、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能。
三、数据库日志文件管理
1、查看数据库中日志文件;
默认是三个组,这是数据库创建时自己添加的三个日志文件组;
2、添加日志文件组并添加成员。
1 log 表一般都是顺序插入的,没有大量delete的情况下是没有所谓的碎片的。
题主要 看整理 碎片的效果 ,前提条件 表有了碎片。或者题主做了其他的动作没有表述清楚。
2 构造一个千万级别行记录的表,做大量的delete,insert ,然后查看 表的data_length 和index_length大小 ,再做 alter table xxx engine=innodb 或者 optimize table xxx;
一 碎片是如何产生的
当创建一个数据库实例时,会分成称为表空间(tablespace)的多个逻辑段(segment),如系统(system)表空间,临时(temporary)表空间等。一个表空间可以包含多个数据范围(extent)和一个或多个自由范围块,即自由空间(free space)。
表空间、段、范围、自由空间的逻辑关系如下:
当表空间中生成一个段时,将从表空间有效自由空间中为这个段的初始范围分配空间。在这些初始范围充满数据时,段会请求增加另一个范围。这样的扩展过程会一直继续下去,直到达到最大的范围值,或者在表空间中已经没有自由空间用于下一个范围。
最理想的状态就是一个段的数据可被存在单一的一个范围中。这样,所有的数据存储时靠近段内其它数据,并且寻找数据可少用一些指针。但是一个段包含多个范围的情况是大量存在的,没有任何措施可以保证这些范围是相邻存储的。 当要满足一个空间要求时,数据库不再合并相邻的自由范围(除非别无选择), 而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间,即碎片。
表空间(tableSpace) 段(segment) 盘区(extent) 块(block) 关系
>
--如何知道是否发生了索引碎片
SELECT object_name(dtobject_id) Tablename,siname
IndexName,dtavg_fragmentation_in_percent AS
ExternalFragmentation,dtavg_page_space_used_in_percent AS
InternalFragmentation
FROM
(
SELECT object_id,index_id,avg_fragmentation_in_percent,avg_page_space_used_in_percent
FROM sysdm_db_index_physical_stats (db_id('DB_DJSMS'),null,null,null,'DETAILED'
)
WHERE index_id <> 0) AS dt INNER JOIN sysindexes si ON siobject_id=dtobject_id
AND siindex_id=dtindex_id AND dtavg_fragmentation_in_percent>10
AND dtavg_page_space_used_in_percent<75 ORDER BY avg_fragmentation_in_percent DESC
--索引碎片信息
--使用下面的规则分析结果 你就可以找出哪里发生了索引碎片
--1)ExternalFragmentation的值>10表示对应的索引发生了外部碎片;
--2)InternalFragmentation的值<75表示对应的索引发生了内部碎片
--如何整理索引碎片
--有两种整理索引碎片的方法
--1)重组有碎片的索引执行下面的命令
ALTER INDEX ALL ON TableName REORGANIZE
--2)重建索引执行下面的命令
ALTER INDEX ALL ON TableName REBUILD WITH (FILLFACTOR=90,ONLINE=ON)
--也可以使用索引名代替这里的ALL关键字重组或重建单个索引 也可以使用SQL Server管理工作台进行索引碎片的整理
使用SQL Server管理工作台整理索引碎片
什么时候用重组什么时候用重建呢
当对应索引的外部碎片值介于10-15之间内部碎片值介于60-75之间时使用重组其它情况就应该使用重建
值得注意的是重建索引时索引对应的表会被锁定但重组不会锁表因此在生产系统中对大表重建索引要慎重因为在大表上创建索引可能会花几个小时
幸运的是从SQL Server 2005开始微软提出了一个解决办法在重建索引时将ONLINE选项设置为ON这样可以保证重建索引时表仍然可以正常使用
虽然索引可以提高查询速度但如果你的数据库是一个事务型数据库大多数时候都是更新 *** 作更新数据也就意味着要更新索引
这个时候就要兼顾查询和更新 *** 作了因为在OLTP数据库表上创建过多的索引会降低整体数据库性能
如果你的数据库是事务型的平均每个表上不能超过5个索引 如果你的数据库是数据仓库型平均每个表可以创建10个索引都没问题
以MySQL为例,碎片的存在十分影响性能
MySQL 的碎片是 MySQL 运维过程中比较常见的问题,碎片的存在十分影响数据库的性能,本文将对 MySQL 碎片进行一次讲解。
判断方法:
MySQL 的碎片是否产生,通过查看
show table status from table_nameG;
这个命令中 Data_free 字段,如果该字段不为 0,则产生了数据碎片。
产生的原因:
1 经常进行 delete *** 作
经常进行 delete *** 作,产生空白空间,如果进行新的插入 *** 作,MySQL将尝试利用这些留空的区域,但仍然无法将其彻底占用,久而久之就产生了碎片;
演示:
创建一张表,往里面插入数据,进行一个带有 where 条件或者 limit 的 delete *** 作,删除前后对比一下 Data_free 的变化。
删除前:
删除后:
Data_free 不为 0,说明有碎片;
2 update 更新
update 更新可变长度的字段(例如 varchar 类型),将长的字符串更新成短的。之前存储的内容长,后来存储是短的,即使后来插入新数据,那么有一些空白区域还是没能有效利用的。
演示:
创建一张表,往里面插入一条数据,进行一个 update *** 作,前后对比一下 Data_free 的变化。
CREATE TABLE `t1` ( `k` varchar(3000) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
更新语句:update t1 set k='aaa';
更新前长度:223 Data_free:0
更新后长度:3 Data_free:204
Data_free 不为 0,说明有碎片;
产生影响:
1 由于碎片空间是不连续的,导致这些空间不能充分被利用;
2 由于碎片的存在,导致数据库的磁盘 I/O *** 作变成离散随机读写,加重了磁盘 I/O 的负担。
清理办法:
MyISAM:optimize table 表名;(OPTIMIZE 可以整理数据文件,并重排索引)
Innodb:
1 ALTER TABLE tablename ENGINE=InnoDB;(重建表存储引擎,重新组织数据)
2 进行一次数据的导入导出
碎片清理的性能对比:
引用我之前一个生产库的数据,对比一下清理前后的差异。
SQL执行速度:
select count() from testtwitter_11;修改前:1 row in set (737 sec)
修改后:1 row in set (128 sec)
结论:
通过对比,可以看到碎片清理前后,节省了很多空间,SQL执行效率更快。所以,在日常运维工作中,应对碎片进行定期清理,保证数据库有稳定的性能。
MySQL 8016 已经发布,它像往常一样增强了组复制 Group Replication 功能。
这篇文章介绍了 MySQL 8016 为 Group Replication 带来的新功能:
Message fragmentation(信息碎片化)。
背景
Group Replication 目前使用 XCom(一种组通信引擎),特点:原子性,组员状态检测等。每个成员的组复制插件先将信息转发到本地 XCom,再由 XCom 最终以相同的顺序将信息传递给每个组成员的 Group Replication 插件。
XCom 由单线程实现。当一些成员广播信息过大时,XCom 线程必须花费更多的时间来处理那个大信息。如果成员的 XCom 线程忙于处理大信息的时间过长,它可能会去查看其他成员的 XCom 实例。例如,忙碌的成员失效。如果是这样,该组可以从该组中驱逐忙碌的成员。
MySQL 8013 新增 group_replication_member_expel_timeout 系统变量,您可以通过它来调整将成员从组中驱逐的时间。例如,怀疑成员失败,但成员实际上忙于处理大信息,给成员足够的时间来完成处理。在这种情况下,是否为成员增加驱逐超时的设置是一种权衡。有可能等了很久,该成员实际真的失效了。
Message fragmentation(信息碎片化)
MySQL 8016 的 Group Replication 插件新增用来处理大信息的功能:信息碎片化。
简而言之,您可以为成员的广播信息指定最大值。超过最大值的信息将分段为较小的块传播。
您可以使用 group_replication_communication_max_message_size 系统变量指定允许的信息最大值(默认值为10 MiB)。
示例
让我们用一个例子来解释新功能。图1显示了当绿色成员向组广播信息时,新功能是如何处理的。
图1 对传出信息进行分段
1 如果信息大小超过用户允许的最大值(group_replication_communication_max_message_size),则该成员会将信息分段为不超过最大值的块。
2 该成员将每个块广播到该组,即将每个块单独转发到XCom。
XCom 最终将这些块提供给组成员。下面三张图展示出了中间绿色成员发送大信息时工作的新特征。
图2a 重新组合传入的信息:第一个片段
3 成员得出结论,传入的信息实际上是一个更大信息的片段。
4 成员缓冲传入的片段,因为他们认为片段是仍然不完整的信息的一部分。(片段包含必要的元数据以达到这个结论。)
图2b 重新组合传入的信息:第二个片段
5 见上面的第3步。
6 见上面的第4步。
图2c 重新组合传入的信息:最后一个片段
7 成员得出结论,传入的信息实际上是一个更大信息的片段。
8 成员得出结论,传入的片段是最后一个缺失的块,重新组合原始信息,然后对其进行处理,传输完毕。
结论
MySQL 8016 已经发布后,组复制现在可以确保组内交换的信息大小不超过用户定义的阈值。这可以防止组内误判而驱逐成员。
以上就是关于Exchange2003本地磁盘空间已经满,请怎么彻底淸理全部的内容,包括:Exchange2003本地磁盘空间已经满,请怎么彻底淸理、数据库如何管理、mysql 碎片整理 ALTER TABLE XXX ENGINE 怎么不见减小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)