关于镜像时的索引碎片整理问题

zc_0101 2010-05-05 09:33:15
A和B为镜像关系,现在要整理A上的索引碎片,A的日志文件大小遂暴涨,
并且原封不动的将暴涨的日志文件传送至B,感觉很不爽~
遂翻开MSDN联机丛书,发现在重建索引时有SORT_IN_TEMPDB这个选项,
意为节省应用数据库磁盘空间,吾理解为可以减小日志大小,
赶紧进行测试,缺发现用了此选项非但没有减小日志文件,反而增加了
10多兆,tempdb数据库的数据文件和日志文件也没有任何变化,不解,
现有以下疑问请教:
1、Sort_in_Tempdb这个选项到底能为我们提供什么便利?
2、有没有一种方法可以避免在索引碎片整理时日志文件的暴涨(前提:不影响镜像关系)?
...全文
280 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Garnett_KG 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zc_0101 的回复:]

引用 10 楼 garnett_kg 的回复:
引用 8 楼 zc_0101 的回复:

引用 7 楼 garnett_kg 的回复:
日志备份后可以使日志空间重复使用,可以控制日志文件的暴涨。

哦,明白了,你是这个意思,但是它仍然不能控制碎片整理时的实际增长量,
退一步说,如果我能容忍此时的日志暴涨,那又有什么办法控制镜像端的同步暴涨呢?


没办法,设计使然。

你……
[/Quote]

还是做日志备份。
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 haiwer 的回复:]
镜像的同步依赖日志,这问题没法解决
索引碎片整理没必要经常做
[/Quote]
嗯,谢谢,收到
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 garnett_kg 的回复:]
引用 8 楼 zc_0101 的回复:

引用 7 楼 garnett_kg 的回复:
日志备份后可以使日志空间重复使用,可以控制日志文件的暴涨。

哦,明白了,你是这个意思,但是它仍然不能控制碎片整理时的实际增长量,
退一步说,如果我能容忍此时的日志暴涨,那又有什么办法控制镜像端的同步暴涨呢?


没办法,设计使然。

你主服务在做Index Rebuild,同样镜像端也必……
[/Quote]
呵呵,谢谢仁兄~
得寸进尺一下,有没有不断开镜像关系的前提下,截断日志的方法?
Garnett_KG 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zc_0101 的回复:]

引用 7 楼 garnett_kg 的回复:
日志备份后可以使日志空间重复使用,可以控制日志文件的暴涨。

哦,明白了,你是这个意思,但是它仍然不能控制碎片整理时的实际增长量,
退一步说,如果我能容忍此时的日志暴涨,那又有什么办法控制镜像端的同步暴涨呢?
[/Quote]

没办法,设计使然。

你主服务在做Index Rebuild,同样镜像端也必须要做才能保持两台DB的同步啊。

所以主服务器的日志必须全部发送到镜像端,然后再Apply.
昵称被占用了 2010-05-05
  • 打赏
  • 举报
回复
镜像的同步依赖日志,这问题没法解决
索引碎片整理没必要经常做
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 garnett_kg 的回复:]
日志备份后可以使日志空间重复使用,可以控制日志文件的暴涨。
[/Quote]
哦,明白了,你是这个意思,但是它仍然不能控制碎片整理时的实际增长量,
退一步说,如果我能容忍此时的日志暴涨,那又有什么办法控制镜像端的同步暴涨呢?
Garnett_KG 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zc_0101 的回复:]

引用 3 楼 garnett_kg 的回复:
1. sort_in_tempdb 某种程度上可以减少i/o的竞争

2. 缩短日志备份的时间.

跟日志备份有什么关系?
[/Quote]

日志备份后可以使日志空间重复使用,可以控制日志文件的暴涨。
Garnett_KG 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zc_0101 的回复:]

引用 2 楼 haiwer 的回复:
SORT_IN_TEMPDB选项只是在索引生成过程中,将中间的排序结果放在tempdb,从而在tempdb与数据库不在一个物理磁盘的情况下提高生成索引的速度,日志该放哪里放哪里。

恩,我后来仔细看了一下tempdb 和索引创建,发现它只是临时占用磁盘空间,
所以我又重新做了一次测试,在开启sort_in_tempdb选项时,整理碎片的过程中去观察t……
[/Quote]

整理碎片的过程中,请用下面的查询观察tempdb的详细使用状况


SELECT SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count)*8) AS [free space in KB],
SUM(internal_object_reserved_page_count) AS [internal object pages used],
(SUM(internal_object_reserved_page_count)*8) AS [internal object space in KB],
SUM(version_store_reserved_page_count) AS [version store pages used],
(SUM(version_store_reserved_page_count)*8) AS [version store space in KB],
SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count)*8) AS [user object space in KB]
FROM sys.dm_db_file_space_usage;
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 garnett_kg 的回复:]
1. sort_in_tempdb 某种程度上可以减少i/o的竞争

2. 缩短日志备份的时间.
[/Quote]
跟日志备份有什么关系?
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 haiwer 的回复:]
SORT_IN_TEMPDB选项只是在索引生成过程中,将中间的排序结果放在tempdb,从而在tempdb与数据库不在一个物理磁盘的情况下提高生成索引的速度,日志该放哪里放哪里。
[/Quote]
恩,我后来仔细看了一下tempdb 和索引创建,发现它只是临时占用磁盘空间,
所以我又重新做了一次测试,在开启sort_in_tempdb选项时,整理碎片的过程中去观察tempdb所在的磁盘空间,也没有发现明显的变化,在之前的测试中tempdb的数据以及log文件也没有明显的变化,这又是为什么呢?
Garnett_KG 2010-05-05
  • 打赏
  • 举报
回复
1. sort_in_tempdb 某种程度上可以减少i/o的竞争

2. 缩短日志备份的时间.
昵称被占用了 2010-05-05
  • 打赏
  • 举报
回复
SORT_IN_TEMPDB选项只是在索引生成过程中,将中间的排序结果放在tempdb,从而在tempdb与数据库不在一个物理磁盘的情况下提高生成索引的速度,日志该放哪里放哪里。
zc_0101 2010-05-05
  • 打赏
  • 举报
回复
顶一下,大家可以讨论一下~
Q315054403 2010-05-05
  • 打赏
  • 举报
回复
但愿下一版提供ORACLE的逻辑同步功能。。。
2009年度十大SQL Server技巧文章 在向2009年告别之际,我们来回顾一下过去的一年中最受欢迎的SQL Server技巧,包括了OPENROWSET、FILESTREAM等函数的用法、密码工具介绍以及DBA日常工作建议等内容。 通过对这些精华文章的再次回顾,希望可以帮助您梳理一下这一年以来的工作以及学习心得,对未来一年更进一步打下更坚实的基础。 使用bcp工具导入和导出批量数据 微软SQL Server中的批量复制程序(Bulk Copy Program,BCP)能让数据库管理员将数据批量导入表中或将数据从表中批量导入文档中。它还支持一些定义数据如何导出、导入到什么地方、加载哪些数据等选项。  用bcp工具导入和导出批量数据(上)  用bcp工具导入和导出批量数据(中)  用bcp工具导入和导出批量数据(下) 使用SQL Server的OPENROWSET函数 你可能常常会需要运行一个ad hoc查询从远程OLE DB数据源提取数据,或者批量向SQL Server表导入数据。在这种情况下,你可以在T-SQL(Transact-SQL,微软对SQL的扩展)中用OPENROWSET函数给数据源传入一个连接串和查询来提取需要的数据。  使用SQL Server的OPENROWSET函数(上)  使用SQL Server的OPENROWSET函数(下) SQL Server密码破解工具简介 在对SQL Server系统执行入侵测试或者更高级别的安全审计,有一种测试不应该被忽略,那就是SQL Server密码测试。这一点看起来显而易见,但是很多人都会忽略它。  SQL Server密码破解工具简介 使用XML在SQL Server上创建计算列 在SQL Server数据库中,当你想使用一个数据,而这个数据不保存在表中,计算列很有用。在SQL Server中使用XML数据来创建计算列,你的列定义必须包含必要的用来检测向列中插入的是什么数据的表达式。  使用XML在SQL Server上创建计算列(上)  使用XML在SQL Server上创建计算列(下) SQL Server中已满事务日志原因的检测 对于SQL Server数据库管理员来讲,已满事务日志是一个琐碎的,但又很常见的问题。它能引发事务的提前终止,甚至通过阻止所有事务的引入,从而引起系统的崩溃。对于数据库管理员来说,关键是理解将要发生的情况,以便他们可以追踪引起问题的原因。  SQL Server中已满事务日志原因的检测(上)  SQL Server中已满事务日志原因的检测(下) DBA五大浪费间的工作 DBA以常规方式执行的一些任务,不仅对SQL Server数据库几乎没有益处,而且实际上可能对他们的生产环境造成不利影响。在本文中,我会阐述几类这样的工作。如果你正在执行其中的一些工作,我希望你能尽快停下来。  收缩数据库  碎片整理后重建索引  恢复完整备份  删减事务日志  人工通读错误日志 利用动态管理视图提高SQL Server索引效率 就如同数据库DBA了解的一样,合适的索引能够提高查询性能和应用程序可测量性。但是每个附加的索引,都给系统增加了额外开销,因为随着数据从表和视图中不断增加、修改或清除,SQL Server需要维护这些索引。  利用动态管理视图提高SQL Server索引效率(一)  利用动态管理视图提高SQL Server索引效率(二)  利用动态管理视图提高SQL Server索引效率(三) 在SQL Server tempdb满检查数据文件 作为一名数据库DBA,肯定会听说过“tempdb数据库满了”。通常我们很容易确定造成这一问题的原因。但是更多的候这一问题主要源于一组请求,涉及到新代码部署或逐渐增加的数据。  在SQL Server tempdb满检查数据文件 SQL Server运作的简短课程 在实际执行任务之前,有一点背景信息可以会起到帮助作用。那么,到底SQL Server是如何工作的呢?不管你信不信,理解“黑盒”知识几乎可以在Microsoft SQL Server的所有方面起到帮助作用,例如从备份与存储到复制与镜像。  SQL Server运作的简短课程 实现SQL Server 2008中的文件流功能 SQL Server 2008中最新的文件流功能使得你可以配制一个数据类型为varbinary(max)的列,以便将实际数据存储在文件系统中,而非在数据库中。只要愿意,你仍可以作为一个常规的二进制列来查询此列,即使数据自身存储在外部。  实现SQL Server 2008中的文件流功能(上)  实现SQL Server 2008中的文件流功能(下)
第一部分 数据库体系结构 第1章 Oracle体系结构 1 1.1 数据库概述及实例 1 1.2 数据库 1 1.2.1 表空间 2 1.2.2 文件 2 1.3 实例 3 1.4 数据库内部结构 3 1.4.1 表、列和数据类型 4 1.4.2 约束条件 5 1.4.3 抽象数据类型 6 1.4.4 分区和子分区 7 1.4.5 用户 7 1.4.6 模式 8 1.4.7 索引 8 1.4.8 簇 9 1.4.9 散列簇 9 1.4.10 视图 9 1.4.11 序列 10 1.4.12 过程 10 1.4.13 函数 10 1.4.14 软件包 11 1.4.15 触发器 11 1.4.16 同义词 12 1.4.17 权限及角色 12 1.4.18 数据库链接 13 1.4.19 段、盘区和块 14 1.4.20 回滚段 14 1.4.21 快照和显形图 14 1.5 内部存储结构 15 1.5.1 系统全局区 15 1.5.2 环境区 17 1.5.3 程序全局区 17 1.6 后台进程 18 1.7 外部结构 20 1.7.1 重做日志 20 1.7.2 控制文件 21 1.7.3 跟踪文件与警告日志 21 1.8 基本数据库的实现 21 1.8.1 备份/恢复功能 22 1.8.2 安全性能 23 1.8.3 典型数据库逻辑设计 24 1.8.4 典型数据库物理设计 24 1.9 逻辑模型约定 25 1.9.1 一对一关系 25 1.9.2 一对多关系 26 1.9.3 多对多关系 26 1.10 创建数据库 27 1.10.1 修改创建模板的脚本文件 27 1.10.2 创建数据库后修改 MAXDATAFILES 27 1.10.3 使用OEM 28 第2章 硬件配置研究 30 2.1 结构概述 30 2.2 独立主机 31 2.2.1 磁盘阵列独立主机 31 2.2.2 磁盘镜像独立主机 34 2.2.3 多数据库独立主机 35 2.3 网络主机 36 2.3.1 数据库网络 37 2.3.2 远程更新:高级复制选项 39 2.3.3 集群服务器:Oracle并行服务器 40 2.3.4 多处理器:并行查询和并行装载 选项 41 2.3.5 客户机/服务器数据库应用 42 2.3.6 三层体系结构 43 2.3.7 Oracle透明网关访问 44 2.3.8 备用数据库 44 2.3.9 复制型数据库 45 2.3.10 外部文件访问 45 第3章 数据库逻辑设计 47 3.1 最终产品 47 3.2 优化软结构 47 3.2.1 起点:SYSTEM表空间 47 3.2.2 分离应用程序数据段:DATA 48 3.2.3 分离应用程序索引段:INDEXES 48 3.2.4 分离工具段:TOOLS 49 3.2.5 分离回滚段:RBS 50 3.2.6 分离临段:TEMP 50 3.2.7 分离用户:USERS 51 3.3 扩展OFA 51 3.3.1 分离低使用的数据段:DATA_2 51 3.3.2 分离低使用的索引段:INDEXS_2 52 3.3.3 分离工具索引:TOOLS_1 52 3.3.4 分离特殊回滚段:RBS_2 53 3.3.5 分离用户特殊临段: TEMP_USER 53 3.3.6 附加的应用特殊OFA扩展 54 3.4 合理的逻辑设计 54 3.5 解决方案 55 第4章 数据库物理设计 57 4.1 数据库文件设计 57 4.1.1 数据文件间的I/O冲突 57 4.1.2 所有数据库文件中的I/O瓶颈 59 4.1.3 后台进程中的并发I/O操作 61 4.1.4 定义系统恢复能力与性能目标 61 4.1.5 系统硬件及结构镜像的定义 62 4.1.6 识别专用于数据库的磁盘 62 4.1.7 选择正确的设计 63 4.2 I/O权值估计的检验 66 4.3 如何解决磁盘不足问题 69 4.4 解决方案 70 4.4.1 小型开发数据库设计 70 4.4.2 产品OLTP数据库设计 70 4.4.3 具有历史数据的产品OLTP数据库 设计 71 4.4.4 数据仓库设计 72
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot

22,210

社区成员

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

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