随笔分类 - SQL Server
摘要:对于行存储(相比列存储)的表和索引,启用数据压缩最直接效果是能够减小数据占用的存储空间的大小;除了节省空间之外,数据压缩还能提高 I/O 密集型查询的性能,因为数据存储在更少的数据页(Data Page)中,SQL Server需要从磁盘读取的数据页更少,数据从Disk加载到内存的速度更快,查询的性
阅读全文
摘要:资源组是由一个或多个资源组成的组,WSFC的故障转移是以资源组为单位的,资源组中的资源是相互依赖的。一个资源所依赖的其他资源必须和该资源处于同一个资源组,跨资源组的依赖关系是不存在的。在任何时刻,每个资源组都仅属于集群中的一个结点,该结点就是资源组的活跃结点(Active Node),由活跃结点为应
阅读全文
摘要:AlwaysOn是在SQL Server 2012中新引入的一种高可用技术,从名称中可以看出,AlwaysOn的设计目标是保持数据库系统永远可用。AlwaysOn利用了Windows服务器故障转移集群(Windows Server Failover Clustering,简称WSFC)的健康检测和自
阅读全文
摘要:Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)使用仲裁投票(Quorum Voting)决定集群的健康状况,或使故障自动转移,或使集群离线。当集群中的结点发生故障时,会由其他结点接手继续提供服务,不过,当结点之间通信出现问题,或大多数
阅读全文
摘要:在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)有基本的了解。WSFC必须部署在域管理环境中,由多台服务器组成,每台服务器称作一个“结点”
阅读全文
摘要:数据库系统的资源是指内存和CPU(处理器)资源,拥有资源的多寡,决定了数据查询的性能。当一个SQL Server实例上,拥有多个独立的工作负载(workload)时,使用资源管理器(Resource Governor),能够实现系统资源在逻辑上的隔离,解决在一台SQL Server实例上,管理多用户
阅读全文
摘要:数据持久化是还原的前提,没有数据的持久化,就无法还原内存优化表的数据,SQL Server In-Memory OLTP的内存数据能够持久化存储,这意味着内存数据能够在SQL Server实例重启之后自动还原。在创建持久化的内存优化表时,必须设置选项:memory_optimized=on,dura
阅读全文
摘要:SQL Server 2016支持哈希查找,用户可以在内存优化表(Memory-Optimized Table)上创建哈希索引(Hash Index),使用Hash 查找算法,实现数据的极速查找。在使用上,Hash Index 和B-Tree索引的区别是:Hash Index 是无序查找,Index
阅读全文
摘要:在逝去的2016后半年,由于项目需要支持数据的快速更新和多用户的高并发,我试水SQL Server 2016的In-Memory OLTP,创建内存数据库实现项目的需求,现在项目接近尾声,系统运行稳定,写一篇博客,记录一下使用内存数据库的经验。 从SQL Server 2016开始支持In-Memo
阅读全文
摘要:内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row versioning)创建数据快照,读操作不会对数据加锁,因此,读写操作不会相互阻塞。写操作会申请行级锁
阅读全文
摘要:SQL Server 在执行查询时,自动将活动的相关信息保存在内存中,这些活动信息称作DMV(Dynamic Management View),DMV记录SQL Server实例级别上的活动信息。由于DMV使用内存作为存储媒介,在读取DMV时,不需要IO操作,读写数据速度极快,不会对Server产生
阅读全文
摘要:在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行Partition Split操作之前,都要为Partition Scheme指定Next Used。
阅读全文
摘要:在关系型 DB中,分区表经常使用DateKey(int 数据类型)作为Partition Column,每个月的数据填充到同一个Partition中,由于在Fore-End呈现的报表大多数是基于Month的查询,按照Month分区的设计能够提高查询性能,但是,如果,前任DBA没有创建Schedule
阅读全文
摘要:SQL Server 并发控制 第一篇:并发模式和事务 SQL Server 并发控制 第二篇:隔离级别和锁(1) SQL Server 并发控制 第三篇:隔离级别和行版本(2) 隔离级别定义事务处理数据读取操作的隔离程度,隔离级别控制读操作的行为。在乐观并发模式下,使用行版本化技术,当对数据进行更
阅读全文
摘要:本文用于收集在运维中经常使用的系统内置(built-in)函数,持续整理中 一,常用的获取元数据的函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的ID和Name,对象的Schema,对象的定义 OBJECT_ID ( 'sche
阅读全文
摘要:在Disk-Base数据库中,由于临时表和表变量的数据存储在tempdb中,如果系统频繁地创建和更新临时表和表变量,大量的IO操作集中在tempdb中,tempdb很可能成为系统性能的瓶颈。在SQL Server 2016的内存(Memory-Optimized)数据库中,如果考虑使用内存优化结构来
阅读全文
摘要:在SQL Server中,普通表可以转化为分区表,而分区表不能转化为普通表,普通表转化成分区表的过程是不可逆的,将普通表转化为分区表的方法是: 在分区架构(Partition Scheme)上创建聚集索引,就是说,将聚集索引分区。 数据库中已有分区函数(partition function) 和分区
阅读全文
摘要:未分区的表,相当于只有一个分区,只能存储在一个FileGroup中;对表进行分区后,每一个分区都存储在一个FileGroup,或分布式存储在不同的FileGroup中。对表进行分区的过程,实际上是将逻辑上完整的一个表,按照特定的字段拆分成多个分区,分散到相同或不同的FileGroup中,每一个部分叫
阅读全文
摘要:在SQL Server中,对超级大表做数据归档,使用select和delete命令是十分耗费CPU时间和Disk空间的,SQL Server必须记录相应数量的事务日志,而使用switch操作归档分区表的老数据,十分高效,switch操作不会移动数据,只是做元数据的置换,因此,执行分区切换操作的时间是
阅读全文
摘要:在SQL Server中,使用Create Database创建数据库,使用Alter Database命令,能够修改数据库的数据文件和日志文件。 一,创建数据库 1,在创建数据库时,最佳实践是: 创建一个或多个文件组,并设置默认文件组 每个文件组中的数据文件和CPU的内核数据相同,将文件均匀分布在
阅读全文