SQL Server介绍
学习文档
自己整理:数据库调优
SQL server和MySql简单对比
SQL server
- Windows首选,跨平台性不好
- 重量级
- 功能丰富,性能略优
- 不开源
MySql
- Linux首选,跨平台性好
- 轻量级
- 功能少一点,性能略差
- 开源
数据库设计
表
主键
主键必须是唯一的,且要依赖索引,可以是聚集索引或者非聚集索引
索引
聚集索引
聚集索引基于聚集索引键按顺序排序和存储表或视图中的数据行。 聚集索引按 B 树索引结构实现,B 树索引结构支持基于聚集索引键值对行进行快速检索。
一个表只能有一个聚集索引
参考:B树、B+树详解
非聚集索引
非聚集索引中的每个索引行都包含非聚集键值和行定位符。 此定位符指向聚集索引或堆中包含该键值的数据行。 索引中的行按索引键值的顺序存储,但是不保证数据行按任何特定顺序存储,除非对表创建聚集索引。
约束
查询全部约束
```sql
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
```
堆(没有聚集索引的表)
列存储索引
- 大数据超长字段的模糊搜索like '%%'超快
- 更新陈本高:适合更新不太频繁的表
分区表、分表、分库
参考:
阿里P8架构师谈:数据库分库分表、读写分离的原理实现,使用场景
分区表
参考:
概念:分区表是将大表的数据分成称为分区的许多小的子集,类型有FAT16,FAT32,NTFS,exFAT,Ext2/3/4,HFS+,VMFS。另外,分区表的种类划分主要有:range(范围)、list(列表)和hash(散列)分区。划分依据主要是根据其表内部属性。同时,分区表可以创建其独特的分区索引。倘若硬盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。
适合场景:
- 单张表数据达到千万级别的时候考虑分区表,一般按年或者按月分
- 历史数据不常用,一般只用最近日期数据的表,例如与时间有关的表:打卡记录表、日志、消费记录等
分表
适合场景:
- 大数据量且访问频繁的表
分库
Transact-SQL (T-SQL)
查询
WITH common_table_expression(CTE)
参考
概念:指定临时命名的结果集,这些结果集称为公用表表达式 (CTE)
使用范围:可用于查询语句、函数、视图、存储过程、触发器
优点:
- 提高代码可读性
- 复用,提高性能
- 可递归 (注意:默认递归次数是100,不建议更改此项,避免死循环)
分页
参考:
XML
- XML 数据类型方法
- query() 方法
- value() 方法
- exist() 方法
- modify() 方法
- nodes() 方法
- 在 XML 数据内部绑定关系数据
- xml 数据类型方法的使用准则
- XQuery 扩展函数 - sql:column()
- XQuery 扩展函数 - sql:variable()
参考
事务
参考:
锁
安全性
管理、监视和优化
管理
监视
优化
架构 SCHEMA
可以自定义架构,预定义的架构有:
- dbo:最常见,表、视图、存储过程、函数等,默认都是使用dbo架构
- sys
- guest
- INFORMATION_SCHEMA
跨服务器操作数据库
--创建远程服务连接及登录
exec sp_addlinkedserver 'RemoteServices', ' ', 'SQLOLEDB ', 远程数据库实例地址'
exec sp_addlinkedsrvlogin 'RemoteServices', 'false ',null, 'sa', 'sa密码'
--跨服务器查询
select * from RemoteServices.gdgroup.dbo.表名
本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接,否则保留追究法律责任的权利。