1.1服务器硬件
1.1.1版本和人为因素:
影响数据库性能的因素有很多,从Windows2000到Win10,再加上32位64位,数据库版本又从SQLServer2000到SQLServer2014开发版本,专业版本。但影响最大的还是程序员。性能问题人为因素占比75%
1.1.2.内存:
IO偏高且CPU繁忙,说明新查询的东西不在内存中,需要去硬盘中读取。如果长期这样,内存存到瓶颈
1.1.3.CPU:
CPU 30%空闲,50-60,繁忙工作。长时超过80%,需要查询原因,是否有性能不高的SQL,执行频率还高
1.1.4.磁盘I/O:
数据库内存中不够用时会把长时不使用的东西存储到硬盘中,数据库日志也会时时的记录。通常情况下,一次IO时间为10毫秒
1.1.5.网络带宽
1.2.SQLServer系统的配置
1.2.1.最大内存
为操作系统和其它服务如IIS服务站点预留内存,不允许把数据库内存设置到最大
1.2.2.数据文件配置
如果是高并发系统,使用如下方案:
1。将主数据库的数据文件拆分成多个文件。与CPU个数相当。
2。将数据文件与日志文件存到在不同的物理磁盘。提高IO并发。
3。将数据库文件放到独立的物理磁盘。
1.3.数据库结构
1.3.1.表设计
1。尽可能添加数据完整约束:非空约束,默认值约束,唯一约束,外键约束。有助于数据库关系引擎分析SQL语句。
2。尽可能使用小的字段类型。占用空间越小搜索性能更佳。
3。表可以支持很多字段 ,但不要把大部分字段放到一张表中。理由同上。
4。SQL越简单越好,避免过多或不必要的关联。
1.3.2.约束
1。默认值约束,影响最小,忽略
2。Check约束
指定Check约束时,逻辑越简单越好。有Check约束,相当于告诉查询优化器这个只有某些值,而不再进行检索。
3。唯一约束
筛选率非常高,有查询优化有极大的帮助。
4。外键约束
保证数据完整性。需要对外键增加索引,否则全表搜索。
不要对日志表和历史表增加索引
1.3.3.冗余
适当冗余可以避免过多关联。这一点需要权衡。