性能功能优化总结

性能优化:
1.分析阶段:确定实时性需求、响应时间的需求、硬件的配置
2.设计阶段:最关键的阶段,关系到以后所有性能调试的过程,设计完成可以进行初步索引设计,为整个系统打下好的基础。
1.遵循四范式 属性不能拆分,完全函数依赖,消除传递依赖 对于每一个X->Y,X都能找到一个候选码( 若关系中的某一属性组的值能唯一地表示一个元组,而其真子集不行,则称该属性组为候选码)。
2.合理的冗余
3.主键设计 相当于唯一索引
4.外键设计 外键是最高效的一致性维护方法,数据库的一致性要求,依次可以用外键、CHECK约束、规则约束、触发器、客户端程序,一般认为,离数据越近的方法效率越高。 
5.字段设计 数字型比字符串快,数据类型尽量小,尽量不允许为null,少用text,image
6.数据库物理存储和环境的设计
在设计阶段,可以对数据库的物理存储、操作系统环境、网络环境进行必要的设计,使得我们的系统在将来能适应比较多的用户并发和比较大的数据量。
这里需要注意文件组的作用,适用文件组可以有效把I/O操作分散到不同的物理硬盘,提高并发能力。
7.系统设计 系统设计阶段应该归纳一些业务逻辑放在数据库编程实现,数据库编程包括数据库存储过程、触发器和函数。用数据库编程实现业务逻辑的好处是减少网络流量并可更充分利用数据库的预编译和缓存功能。
8、
索引的设计
在设计阶段,可以根据功能和性能的需求进行初步的索引设计,这里需要根据预计的数据量和查询来设计索引,可能与将来实际使用的时候会有所区别。
关于索引的选择,应改主意:
A、
根据数据量决定哪些表需要增加索引,数据量小的可以只有主键。
B、
根据使用频率决定哪些字段需要建立索引,选择经常作为连接条件、筛选条件、聚合查询、排序的字段作为索引的候选字段。
C、
把经常一起出现的字段组合在一起,组成组合索引,组合索引的字段顺序与主键一样,也需要把最常用的字段放在前面,把重复率低的字段放在前面。
D、
一个表不要加太多索引,因为索引影响插入和更新的速度。

编码阶段:

1.只返回需要的数据
2.尽量少做重复的工作
3.注意事务和锁 原子性、一致性、隔离性、持久性
4.注意临时表和表变量的用法 关于临时表产生使用SELECT INTO和CREATE TABLE + INSERT INTO的选择,我们做过测试,一般情况下,SELECT INTO会比CREATE TABLE + INSERT INTO的方法快很多,但是SELECT INTO会锁定TEMPDB的系统表SYSOBJECTS、SYSINDEXES、SYSCOLUMNS,在多用户并发环境下,容易阻塞其他进程,所以我的建议是,在并发系统中,尽量使用CREATE TABLE + INSERT INTO,而大数据量的单个语句使用中,使用SELECT INTO。

尽量使用索引 不要对索引字段进行运算,而要想办法做变换 不要对索引字段进行格式转换 不要对索引字段使用函数 要对索引字段进行多字段连接

原文地址:https://www.cnblogs.com/xwchengc/p/5231278.html