上一页 1 2 3 4 5 6 7 8 ··· 21 下一页
摘要: 什么?有个 SQL 执行了 8 秒?哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。本系列文章《人人都是 DBA》收集了许多常用的 SQL Server 数据库排错脚本,可协助排查各种配置问题、性能问题等。SQL Server 数据库的性能调优涉及到很多方面的知识,无法仅通过几个脚本来定位问题。这些脚本可以提供一些必要的线索和证据,结合业务应用类型、数据存取方式、网络拓扑结构、磁盘阵列性能、硬件能力等来判断需要优化的位置。 阅读全文
posted @ 2014-12-11 08:40 sangmado 阅读(4116) 评论(11) 推荐(17) 编辑
摘要: 什么?有个 SQL 执行了 8 秒?哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。本系列文章《人人都是 DBA》收集了许多常用的 SQL Server 数据库排错脚本,可协助排查各种配置问题、性能问题等。SQL Server 数据库的性能调优涉及到很多方面的知识,无法仅通过几个脚本来定位问题。这些脚本可以提供一些必要的线索和证据,结合业务应用类型、数据存取方式、网络拓扑结构、磁盘阵列性能、硬件能力等来判断需要优化的位置。 阅读全文
posted @ 2014-12-10 18:52 sangmado 阅读(3027) 评论(7) 推荐(8) 编辑
摘要: 什么?有个 SQL 执行了 8 秒?哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。本系列文章《人人都是 DBA》收集了许多常用的 SQL Server 数据库排错脚本,可协助排查各种配置问题、性能问题等。SQL Server 数据库的性能调优涉及到很多方面的知识,无法仅通过几个脚本来定位问题。这些脚本可以提供一些必要的线索和证据,结合业务应用类型、数据存取方式、网络拓扑结构、磁盘阵列性能、硬件能力等来判断需要优化的位置。 阅读全文
posted @ 2014-12-10 12:31 sangmado 阅读(3735) 评论(5) 推荐(9) 编辑
摘要: 什么?有个 SQL 执行了 8 秒?哪里出了问题?臣妾不知道啊,得找 DBA 啊。DBA 人呢?离职了!!擦!!!程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA"。本系列文章《人人都是 DBA》收集了许多常用的 SQL Server 数据库排错脚本,可协助排查各种配置问题、性能问题等。SQL Server 数据库的性能调优涉及到很多方面的知识,无法仅通过几个脚本来定位问题。这些脚本可以提供一些必要的线索和证据,结合业务应用类型、数据存取方式、网络拓扑结构、磁盘阵列性能、硬件能力等来判断需要优化的位置。 阅读全文
posted @ 2014-12-10 12:16 sangmado 阅读(2375) 评论(1) 推荐(2) 编辑
摘要: SQL Server 数据库的每张表和索引都可以存储在多个分区上,用于描述某个分区上某张表或索引子集的术语是 hobt,代表 Heap Or B-Tree,即堆或 B 树,发音读作 "hobbit"。分区上可以存储 3 种类型的数据页:行内数据页(In-Row Data Pages)、行溢出页(Row-Overflow Data Pages)、LOB 数据页(LOB Data Pages)。一个分区下的一种数据页类型的一组页面称为分配单元(Allocation Unit),可以使用 sys.allocation_units 视图来查看。 阅读全文
posted @ 2014-12-09 08:55 sangmado 阅读(3221) 评论(2) 推荐(9) 编辑
摘要: B 树(B-Tree)是为磁盘等辅助存取设备设计的一种平衡查找树,它实现了以 O(log n) 时间复杂度执行查找、顺序读取、插入和删除操作。由于 B 树和 B 树的变种在降低磁盘 I/O 操作次数方面表现优异,所以经常用于设计文件系统和数据库。B+ 树是 B 树的一个变种,在内部节点中存储的键值同样也会出现在叶节点中,但内部节点中不存储关联附属数据或指针。在叶节点中的不仅存储键值,还存储关联附属数据或指针。此外,叶节点还增加了一个指向下一个顺序关联叶节点的指针,以改进顺序读取的速度。B* 树也是 B 树的一个变种,要求除根节点外的内部节点要至少 2/3 填充,而不是 1/2 填充。为了维持这样的结构,当一个节点填满后不会立即分割节点,而是将它的键值与下一个节点共享,当两个节点都填满之后,再将 2 个节点分割成 3 个节点。 阅读全文
posted @ 2014-12-08 08:22 sangmado 阅读(6849) 评论(14) 推荐(26) 编辑
摘要: 事务日志(Transaction Log)存储的是对数据库所做的更改信息,让 SQL Server 有机会恢复数据库。而恢复(Recovery)的过程就是使数据文件与日志保持一致的过程。任何在日志中指示已经提交的数据更改必须出现在数据文件中,任何未标记为提交的更改不能出现在数据文件中。恢复过程通常分为分析(Analysis)、重做(Redo)和撤销(Undo)三个阶段。预写日志(Write-ahead Logging)功能确保在真正发生变化的数据页写入磁盘前,始终先在磁盘中写入日志记录,使得任务回滚成为可能。写入事务日志是同步的,即 SQL Server 必须等它完成。但写入数据页可以是异步的,所以可以在缓存中组织需要写入的数据页进行批量写入,以提高写入性能。 阅读全文
posted @ 2014-12-03 08:45 sangmado 阅读(4899) 评论(14) 推荐(23) 编辑
摘要: SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb。master 数据库包含用于记录整个服务器安装信息和后续创建的所有数据库的信息。model 数据库是一个模板数据库。msdb 数据库由 SQL Server 提供的一些功能服务组件所使用。tempdb 数据库是 SQL Server 的工作空间。SQL Server 其实还隐藏着第 5 个神秘系统数据库 mssqlsystemresource,称为系统资源数据库,存放的都是系统资源相关的信息。 阅读全文
posted @ 2014-12-02 08:47 sangmado 阅读(5822) 评论(14) 推荐(26) 编辑
摘要: SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache、Buffer Pool、Memory Clerks 等。本文仅是管中窥豹,描述常见的内存管理相关信息。SQL Server 中最主要的内存组件就是缓冲池(Buffer Pool, or Bpool)。缓冲池是一个 8KB 页面的集合,任何大于 8KB 的内存块都需要进行单独分配管理,例如 COM Objects、CLR Code、Extended Stored Procedures、Large Cached Plan 等。缓冲区管理器(Buffer Manager)负责从磁盘上的数据文件中读取数据页(Data Page)和索引页(Index Page),将页数据放入 Buffer Pool 中作为数据缓存(Data Cache)。Buffer 指的是内存中的一个 Page,该 Page 的大小与数据页或索引页相同。SQL Server 采用预读机制(Read-ahead)从磁盘中读取数据页和索引页至缓冲区中,以提高性能。预读机制完全有系统内部控制,不需要进行任何配置和调整。 阅读全文
posted @ 2014-12-01 08:37 sangmado 阅读(4519) 评论(4) 推荐(10) 编辑
摘要: 在 SQL Server 中,当数据库启动后,SQL Server 会为每个物理 CPU(包括 Physical CPU 和 Hyperthreaded)创建一个对应的任务调度器(Scheduler),Scheduler 可以看作为逻辑 CPU(Logical CPU)。根据 Affinity Mask 选项的配置,Scheduler 的状态被设置为 ONLINE 或 OFFLINE。默认的 Affinity Mask 是 0,也就是所有 Scheduler 均为 ONLINE。Scheduler 负责根据需求创建和销毁 Worker,一个 Worker 即可是一个 Thread 也可以是一个 Fiber,可以通过 Max Worker Threads 和 Use Windows Fibers 配置项来进行设置。 阅读全文
posted @ 2014-11-28 08:31 sangmado 阅读(3996) 评论(8) 推荐(7) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 21 下一页