随笔分类 -  SQL Server 管理

摘要:问题 在上一篇文章中,我们使用Telegraf自带的Plugin配置好了的监控,但是自带的Plugin并不能完全覆盖我们想要的监控指标,就需要收集额外的自定义的监控数据,实现的方法有: 开发自己的Telegraf Plugin 使用可以执行自定义脚本的inputs plugin 此处收集的监控项不多 阅读全文
posted @ 2020-06-11 08:36 Joe.TJ 阅读(1591) 评论(2) 推荐(0) 编辑
摘要:问题 SQL Server在很多企业中部署在多个平台上(Windows,Linux和Container),需要一种能支持多平台的解决方案用于收集和展示相关的监控指标。 我选择企业中比较流行的监控展示工具Grafana和监控指标收集工具Telegraf进行实现。这也是为了方便与企业中已经在存在监控平台 阅读全文
posted @ 2020-06-01 18:09 Joe.TJ 阅读(2262) 评论(5) 推荐(1) 编辑
摘要:当遇到备份或者还原操作占用较长时间时,很多人会问: 1. 备份/还原是不是僵死了?要不要kill掉,再重来? 2. 到底是哪一个部分的操作占用较长时间? 3. 到底现在进行到什么阶段了 ? 在SQL 2016 之前,要回答这些问题会比较困难一些,或者借助某些不受支持的方式。SQL 2016开始引入了 阅读全文
posted @ 2017-08-30 15:05 Joe.TJ 阅读(620) 评论(0) 推荐(1) 编辑
摘要:1. 使用Upgrade Adviser评估升级前需要解决的事情。 https://msdn.microsoft.com/zh-cn/library/ms144256(v=sql.110).aspx https://msdn.microsoft.com/zh-cn/library/ms144256( 阅读全文
posted @ 2017-02-11 23:21 Joe.TJ 阅读(4610) 评论(1) 推荐(1) 编辑
摘要:今天微软正式发布上SQL Server 2016 SP1,根据以往的SP1定律,可以在生产环境上使用了。打了SP1的标准版将具有企业版几乎所有的的功能。只有RAM 超过128GB或者超过24核心或者超过4路的环境才必须要安装企业版。 还有一个重要的发布: "SQL Server vNext on L 阅读全文
posted @ 2016-11-17 16:29 Joe.TJ 阅读(3369) 评论(5) 推荐(7) 编辑
摘要:1. 索引重建和重组有什么用? 当修改表(UPDATE、INSERT、DELETE等)中数据,数据库引擎自动维护索引的数据和结构。但是随着修改次数的累积,可能会现: 索引中记录的数据顺序(逻辑顺序)和数据的实际顺序不一致(物理顺序),这也称之为 外部碎片 。 索引页的数据填充度变小(页密度),也称之 阅读全文
posted @ 2016-09-30 11:58 Joe.TJ 阅读(6235) 评论(2) 推荐(2) 编辑
摘要:如何查看被截断的日志 如果数据库做了日志备份操作,则日志会被截断,然后原来活动的VLF会被重用。使用sys.fn_dblog将会看不到任何被截断的日志。那如何查看日志备份中的日志呢?使用fn_dump_dblog读取日志备份的内容。它的输出和sys.fn_dblog是一样的,所以进行查询过滤时也可以 阅读全文
posted @ 2016-08-23 15:22 Joe.TJ 阅读(3427) 评论(0) 推荐(0) 编辑
摘要:接下来说说返回的RowLogo Content列,例子中返回了三个列。这些列包含了数据操作的“有效工作负载(Playload)”记录。根据不同操作类型有效负载的内容也是不同的,但是它必须包含足够的信息,能让相应的数据操作在恢复时能被REDO和UNDO。对于每一个INSERT而言,它包含了插入行的所有 阅读全文
posted @ 2016-08-19 18:23 Joe.TJ 阅读(2209) 评论(0) 推荐(0) 编辑
摘要:SQL Server 的事务日志包含所有数据修改的操作记录。分析日志一般作为解决某些问题的最后手段,如查看某些意外的修改。理解和分析日志内容是件非常困难的事情,fn_dblog通常会输出非常多的数据,查看也比较困难。我尝试用一些实例帮助大家更好地分析和理解日志。 SQL Server 使用Write 阅读全文
posted @ 2016-08-18 11:10 Joe.TJ 阅读(8387) 评论(1) 推荐(1) 编辑
摘要:1. 决定压缩哪些对象 通过sp_estimate_data_compression_savings 评估在ROW和PAGE压缩时分别节省的空间量。 表包含如下数据模式时,会有较好的压缩效果: 数字类型的列和固定长度的字符类型数据,但两者的大多数值都不会用到此类型的所有字节。如INT列的值大多数少于 阅读全文
posted @ 2016-07-13 14:26 Joe.TJ 阅读(1110) 评论(4) 推荐(4) 编辑
摘要:什么是临界点? 注意,我要说的问题是非聚集索引的执行计划从Seek+Lookup变成Table/Clustered Index Scan的临界点。SQL Server的访问数据的IO最小单元是页。 我们知道聚集索引的叶级是数据页,非聚集索引的叶级是指向数据行的指针。所以通过聚集索引获取数据时,就是直 阅读全文
posted @ 2016-06-30 15:57 Joe.TJ 阅读(876) 评论(10) 推荐(5) 编辑
摘要:什么是SIX锁? 官方文档锁模式中说到: 意向排他共享 (SIX):保护针对层次结构中某些(而并非所有)低层资源请求或获取的共享锁以及针对某些(而并非所有)低层资源请求或获取的意向排他锁。 顶级资源允许使用并发 IS 锁。 例如,获取表上的 SIX 锁也将获取正在修改的页上的意向排他锁以及修改的行上 阅读全文
posted @ 2016-06-12 16:06 Joe.TJ 阅读(3438) 评论(2) 推荐(2) 编辑
摘要:测试和分析依据上文件最小化日志的判断逻辑,对常见的BULK INSERT和INSERT INTO...SELECT做测试和分析 创建测试环境和基准--创建表tb_source并插入10000条数据use mastergocreate database test;alter database test... 阅读全文
posted @ 2015-11-17 17:14 Joe.TJ 阅读(1073) 评论(6) 推荐(1) 编辑
摘要:什么是最小化日志(Minimal Logging)? 当数据库的恢复模式为SIMPLE或者BULK_LOGGED时,对于最小化日志类型的操作,事务日志不记录单独每个数据行的日志,而是记录对应页和区结构的修改日志。这样显著减少了操作产生的事务日志数量。例如,向某个数据页上插入200行数据,在最小化日志... 阅读全文
posted @ 2015-10-31 10:33 Joe.TJ 阅读(687) 评论(0) 推荐(1) 编辑
摘要:索引修改的大致规则:对表的任何修改操作(UDI),总会对表上的非聚集索引执行等价的操作。某些更新操作除外。对表的任何修改操作,都会先修改堆或者聚集索引,然后再修改非聚集索引。如果修改的数据行,正是过滤索引过滤掉的行(过滤索引的叶级页不包含的行),则不会对过滤索引产生任何操作。插入数据行 对于聚集... 阅读全文
posted @ 2015-10-16 11:34 Joe.TJ 阅读(1655) 评论(0) 推荐(3) 编辑
摘要:Latch是什么 Latch是SQL Server引擎保证内存中的结构的一致性的轻量同步机制。比如索引,数据页和内部结构(比如非叶级索引页)。SQL Server使用Buffer Latch保护缓冲池中的页,用I/O Latch保护还未加载到缓冲池的页,用Non-Buffer Latch保护内存中的 阅读全文
posted @ 2015-09-21 17:08 Joe.TJ 阅读(2474) 评论(2) 推荐(2) 编辑
摘要:介绍 Audit是SQL Server 2008之后才有的功能,它能告诉你“谁什么时候做了什么事情”。具体是指审核SQL Server 数据库引擎实例或单独的数据库涉及到跟踪和记录数据库引擎中发生的事件。它的底层是基于扩展事件(Extented Event),所以其性能和灵活性相对较好。审核数据可... 阅读全文
posted @ 2015-03-04 11:40 Joe.TJ 阅读(20539) 评论(14) 推荐(7) 编辑
摘要:介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. 哪些数据行发生了改变 2. 数据行变更的历史记录,而不仅仅是最终值。 跟CT(Change Tracking)相比,它通过作业实现异步变更跟踪(像事务复制),而CT是同步实现的。因此它... 阅读全文
posted @ 2015-03-04 11:22 Joe.TJ 阅读(8416) 评论(2) 推荐(6) 编辑
摘要:介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。常规的,自定义变更跟踪和读取跟踪数据,会使用触发器,存储过程和记录变更的用户表等, 还需要保证访问一致和相关清理工作。 使用CT会减少额外工作量和保证访问一致性。 启用CT的表上必须得有主键,所有版本适用。为了保证... 阅读全文
posted @ 2015-03-04 11:02 Joe.TJ 阅读(3677) 评论(0) 推荐(1) 编辑
摘要:此文描述查询内存授予(query memory grant)在SQL Server上是如何工作的,适用于SQL 2005 到2008。 查询内存授予(下文缩写为QMG)是用于存储当数据进行排序和连接时的临时中间数据行。查询在实际执行前需要先请求保留内存,所以会存在一个授予的动作。 这样的好处是提高查 阅读全文
posted @ 2014-11-17 21:49 Joe.TJ 阅读(1573) 评论(3) 推荐(1) 编辑