- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库使用Table来存储海量的数据,细分Table结构,数据最终存储在Table Column中,因此,在设计Table Schema时,必须慎重选择Table Column的Data Type,数据类型不仅决定了Column能够存储的数据范围和能够进行的操作,而且合适的数据类型还能提高查询和修改数据的性能。数据类型的选择标准既要满足业务和扩展性的需求,又要使行宽最小(行宽是一行中所有column占用的Byte)。最佳实践:使用与Column最大值最接近的数据类型。
例如,bit 类型只能存储1和0,能够对bit进行逻辑比较(=或),不能对进行算术运算(+,-,*,/,%),不要对其进行或的比较,虽然bit类型支持,但是,这不 make sense。
declare @b1 bit
declare @b2 bit
set @b1=1
set @b2=0
-- right,return 0
select iif(@b1=@b2,1,0)
--error,The data types bit and bit are incompatible in the add operator.
select @b1+@b2
在设计Table Schema时,要实现三大目标:占用空间少,查询速度快???更新速度快。这三个目标有些千丝万缕的关联,设计良好的Table Schema,都会实现,反之,设计差的Table Schema,都不能实现。
内存是访问速度最快的存储介质,如果数据全部存储在内存中,那会极大的提高数据库系统的吞吐量,但是,每个数据库系统能够使用的内存有限,为了提高查询性能,SQL Server将最近使用过的数据驻留在内存中。SQL Server 查询的数据必须在内存中,如果目标数据页不在内存中,那么SQL Server会将数据从Disk读取到内存中。SQL Server 响应时间跟数据加载很大的关系,如果加载的数据集占用的空间小,数据页分布集中,那么SQL Server使用预读机制,能够很快将数据加载到内存,相应地,SQL Server的响应时间会很小。
创建索引能够提高查询性能,其实是因为,索引字段比Base Table的字段少,索引结构占用的存储空间小,SQL Server 加载索引结构的耗时少。由于索引结构是有序的,避免了全表扫描,也能提高查询性能。使用窄的数据类型,使用数据压缩,创建BTree索引,创建ClumnStore 索引,都能减少数据集占用的存储空间,提高数据加载到内存的速度。SQL Server在执行用户的查询请求时,每一行数据都必须在内存中,因此,数据集占用的空间越少,加载的过程越快,SQL Server的查询性能越高。
一,窄的数据行会节省存储空间,减少IO次数
使用窄的数据类型,使行的宽度达到最小,在存储相同数据量时,能够节省存储空间,减少Disk IO的次数。
在存储日期数据时,Date占用3Byte,DateTime占用8Byte,DateTime2(2)占用6Byte,DateTime2(4)占用7Byte,DateTime2(7)占用8Byte。不管从表示的精度上,还是从占用的存储空间上来看,DateTime2(N)都完胜DateTime。
例如,存储‘yyyy-mm-dd MM:HH:SS’格式的日期数据,有以下4中选择:
使用字符串 varchar(19) 或 nvarchar(19)存储,十分不明智,前者占用19Byte后再占用38Byte;
使用数据类型 datetime2(7)存储,占用8Byte,虽然精度更高,但是毫秒都是0,浪费存储空间;
使用数据类型 datetime存储,占用8Byte,如果需要存储毫秒,datetime不满足;
使用数据类型 datetime2(2)存储,占用6Byte,相比较是最理想的。
由于SQL Server存储数据是按照row存储数据的,每个Page能够存储的数据行是有限的。在查询同等数量的数据行时,如果row宽度窄,那么每个page会容纳更多的数据行,不仅减少IO次数,而且节省存储空间。
二,在窄的数据列上创建index,能够提高查询性能
在窄的数据列上创建Index,索引结构占用的存储空间更小,SQL Server消耗更少的Disk IO就能将索引结构加载到内存中,能够提高查询性能。
在创建Index时,必须慎重选择聚集索引键,主要有两个原因
1,聚集索引其实就是表本身,SQL Server必须保持物理存储顺序和逻辑存储顺序一致
在SQL Server中,Clustered Index能够确定Table的物理存储,使Table的物理存储顺序和聚集索引键的逻辑顺序保持一致。在对Table数据进行update时,如果更新聚集索引键,导致数据行所在聚集索
您可能关注的文档
- 【备考导航】2016届高三物理二轮复习第1部分专题整合突破专题五物理实验第2讲电学实验课时过关探索.doc
- DB-222创新型检测及控制实验实训平台探索.doc
- K5+421分离桥吊装方案探索.doc
- K8+307.848盖梁首件工程开工探索.doc
- 【步步高】(江苏专用)2017版高考数学一轮复习第八章立体几何8.3直线、平面平行的判定与性质理探索.doc
- 【步步高】2015届高考生物一轮复习单元排查过三关(八)苏教版探索.doc
- K50-50塔式起重机使用说明书-安装手册探索.doc
- 【步步高】2016高考数学大一轮复习1.1集合的概念与运算教师用书理苏教版探索.doc
- 【步步高】2017版高考地理大一轮复习第4章第12讲自然地理要素变化与环境变迁讲义探索.doc
- K-90B联机热泵控制板规格书探索.doc
最近下载
- 92010083-A02-(金鼎 CoolMaster R410A2.0风冷系列室内机用户手册-触摸屏).pdf VIP
- 临床药物治疗学(暨南大学)临床药物治疗学绪论.ppt VIP
- 安全操作规程培训课件.ppt VIP
- 化工设备机械基础1(2学时) 幻灯片.ppt VIP
- 临床药物治疗学第01章_论精美生物医学.ppt VIP
- 急诊危重症患者院内转运共识———标准化分级转运方案.pdf VIP
- 带状疱疹后神经痛研究进展.docx VIP
- 红楼梦之十二金钗完美攻略.pdf
- 智能配电网故障快速识别及处置方法的深度剖析与实践探索.docx VIP
- 《旅游企业财务管理》 教案全套 项目1--10 旅游企业财务管理概述---旅游企业预算管理.doc
文档评论(0)