- 积分
- 33
- 在线时间
- 146 小时
- 主题
- 2
- 注册时间
- 2013-11-21
- 帖子
- 79
- 最后登录
- 2020-2-12
- 帖子
- 79
- 软币
- 936
- 在线时间
- 146 小时
- 注册时间
- 2013-11-21
|
1.数据库要注意设置为:“自动截断日志”
2.日常要看日志是否太大
3.表要有主键,在查询条件字段要有合适的索引
4.如果基础表的信息不是经常改动,你可以考虑在代码的逻辑层(BLL层)做缓存,减轻数据库的压力
5.查询分析器里面的分析,有列出是否使用索引的,你仔细看看
6.数据表设计要分离经常修改的字段和不常改的字段,分开表存储
7.查询中避免使用聚合函数,例如:sum、count 等、不要有计算字段
8.基础表的数值字段,都不要允许为null,最好字符字段也不能为null, 字段定义默认值就可以了
9.尽量不用函数,尤其是查询条件中,因为如果条件用了函数或者计算,索引就无效了,就会表扫描。
10.如果有表扫描,系统会自动上表级锁,出现表级锁,在并发情况下,很容易出现死锁的.
11.在SQLSERVER的日志里能看到死锁日志
12.一般来说,死锁很大可能是因为有引发表扫描的查询,加上并发造成的.很可能你的查询用不上索引,要用分析器查查
13.[针对表数据量每年成倍增加]用分区存储,如果使用系统内置的分区方法,关健是如何选择分区的主键。要规划好主键,这个主键要在所有的查询中作为条件,不能没有这个条件。另外一种就是手动分区,类似财务的年度帐务的概念,有结转动作
14.不过我个人是倾向于手工分表,虽然代码复杂度上升一些,但是能完全控制。
自动分区如果用得不好,也是一个大麻烦
15.反正char字段问题一大堆,麻烦
16.远程超时分两种情况
1、确实服务端的处理没返回,这个就要优化服务端处理,尽快返回;
2、通信上没有返回,这个就要重发
17.程序代码不允许写数据库事务,明细表通过XML传进去处理,如果调用多个存储过程,建立一个总的存储过程接收数据,再调用其他存储过程处理。
18.用批处理代替游标写法
|
|