再谈数据库性能提升及搜索优化之一 - 服务器的选择及相关配置

来源:互联网 发布:淘宝小二介入怎么取消 编辑:程序博客网 时间:2024/06/05 06:08
 

最近一段时间与数据库优化打了不少交道。对数据库的相关优化有了初步的了解。将这些了解与大家分享一下

一 数据库服务器的选用
目前大多数服务器的配置已经有了相对来说绝对的优势。而随着数据的吞吐量不断的增加。对的服务器的相应的也在不断的增加,而我们如何为自己的程序选择一台合适的服务器。
今天对中型数据库服务器进行适当的分析。

1.根据数据库服务器的实际使用情况选择服务器
   如果您的服务器只是存储一些用户资料。或者相关数据。平常只是根据【标识字段】提取相应的数据的话就用不到很“健壮”的服务器,一块志强的CPU 作为心脏是必要的,2核心就足以了。这样就可以将系统操作和数据库服务操作就有效的分载。 内存2G,硬盘SICI必备的的啊。其实这样的数据库服务器无需太好的配置。

而下面我们针对的是较大操作数据库的配置

   一般这样的数据库不但数据量较多,而且会对其进行非常频繁的操作。比如对字段匹配的搜索、模糊搜索等等。而在这种搜索中迷糊搜索是最为耗费系统资源的。而且尤其是对数据量相对来说较大的时候,例如本人接触的数据库就将近500万的数据 并且经常对其NVARCHAR 和NTEXT 类型数据字段进行频繁的模糊查询。这样的数据库在服务器的选择上就要比较“讲究”了。首先是CPU的选择,针对这样的数据库服务器,数据在计算的处理很少。占用CPU也不会太多,一般来说选择到双核志强*2 2G 即可。因为当500万数据进行模糊搜索的时候4核 *2 1.7G 的服务器CPU最多占用不会超过25%。内存4G.硬盘 最少要SCIC10K转 * 2 组成RAID 0 这样磁盘效率大幅度增加。因为当内存、CPU满足应用的情况下磁盘性能在大数据量操作时就已经成为整个系统的最大瓶颈,如果有必要组成RAID 0+1在安全和效率上达到最好的效果也是不错的选择。至于容量就根据实际应用情况而定了。而网卡最好是千兆的了确保突发的数据吞吐不受影响。

2.数据库的选用
根据数据不同,选择的数据库软件也不同,一般小型数据库选择MYSQL 中型数据库SQL-SERVER 2000是不错的选择。而新的SQL SERVER 2005应用在中大型数据库上已经可以了
再大些的数据库就要选择更为优秀些的 DB2、Oracle  的数据库都是很强大的。当然一个数据库的运行不仅仅靠数据库的选用,而在程序设计表设计等等方面都存在重要的因素。

3.数据库的配置以及使用注意
当选择好数据库后就要对其进行合理的配置以及分配。
1.数据库安装的目录最好不要和系统在一起。如果有必要安装在一块独立的硬盘上。

2.数据库物理文件不要和任何系统程序包括数据库系统放在同一个盘符

3.将搜索的相关数据分离
    这里所说的分离是指数据库文件组的分离,例如索引文件和数据文件组分离这样能有效减少搜索时的性能损耗。例如一个完整的数据库文件有10G,而如果不分离的话每次操作时都要操作这个10G 的物理文件。在磁盘的读写上可想而知。但是我们要是分离出来后,可能索引文件只有2G。而且是分开处理物理文件。如果是磁盘阵列的话效率会提高不少。

4.对表进行表分区,理由同上,相对来说在磁盘效能固定,针对2G文件读写操作来说要比对多个几百MB 文件操作要耗费更对的时间和CPU以及磁盘。尤其在记录的删除上要更为突出。针对分区文件每个推荐不要过小也不宜过大。保持在500~800MB个人感觉较为合适。

5.针对字段进行索引。对字段的索引是提高效率最好的手段,但是不宜建立过多的无效索引,因为这些索引在更新、删除也要重新排列。但是对数据的索引也是必须的。所以就要有效的利用索引功能,而针对模糊搜索以及NTEXT字段普通索引是无效的,在这些字段上要建立全文索引,当然 全文索引最好也能建立在独立的物理磁盘上。而在需要排序日期的字段上也要建立索引。往往大家会对此忽视。但是我个人在实际使用时候在日期建立一个索引对数据的排序搜索时效率要提高5%,不要忽略这小小的5%啊!

以上就对一个数据库的服务器选择的一点见解,希望大家多多指教 数据库的选择以及配置进行了我个人的分析。下回我们对 模糊搜索再次深入分析。

再谈数据库性能提升及搜索优化之二 《依然还是增量搜索》


原文出自 http://www.bg1jt.cn/ 我的个人网站转载请务必著名!

原创粉丝点击