在工作中,遇到很多异常,所以列出来,供大家参考,同时也给出建议,说明一下我不是DBA。
1,此问题很诡异,更新记录时经常出现一部分记录更新成功,一部分记录没有更新成功(有用事务),有做Log但没有发现任何错误。
2,Insert 数据,且所插入表,此表仅一个用户用,仍然会丢失数据,做监控,发现插入很慢,无锁表现象。
但数据库查询速度状况还可以,工作的Server相当好8个CPU(HP的),此时我们的DB大概是45G,当这种状况时,我们做法是备份资料,增加临时表空间,重建部分索引,此现象就消失了。个人认为,SQLServer的I/O处理不及Oracle,DB所用操作系统是Win2003Server,性能不及Linux。
工作中发现表结构、索引很大程度上影响程式的性能,我想很多系统规划时,可能出现两种状况,一种是表的关联性高,容易造成锁表,一种是某些关键表字段过多,性能差,访问频繁,对系统的影响很大。这些状况都要根据实际状况设计。索引的重要性就不用说了,我这提到的是,一个表的索引用的久了,要重建,因为这中间插入数据,更新数据等等,使索引的性能下降了,具体的原理我也不清楚。
最后想说的是,很多的DBA只注重DB的CPU、Mem,我觉得一个DB的I/O直接反映了数据处理状况,很多时候DB的CPU、Mem状况都良好,但I/O太高时就出现上面的状况,还有就临时表也要设置合理,不足的话就出现Insert速度慢的现象。
这是我的一些工作上的看法,不足这处请多多交流。