随笔分类 -  SQL Server

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