数据库优化:
一.索引
二.缓存
三.切表
四.日志分析
五.二级服务器架构
索引分为聚簇索引和非聚簇索引两种,聚簇索引是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。
创建索引的优点:
创建索引可以大大提高系统的性能。
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
创建索引的缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
创建索引的位置:
索引是建立在数据库表中的某些列的上面。一般来说,应该在这些列上创建索引:
1.在经常需要搜索的列上,可以加快搜索的速度;
2.在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
3.在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
4.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
5.在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
配置缓存是必不可少的,配置缓存可以有效的降低数据库查询读取次数,从而缓解数据库服务器压力,达到优化的目的。
可配置的缓存包括索引缓存(key_buffer),排序缓存(sort_buffer),查询缓存(query_buffer),表描述符缓存(table_cache)。
使用缓存技术,将动态数据存储到缓存文件中。由于用户电脑中存在缓存文件,再次访问时就不必访问数据库。
切表也是一种比较流行的数据库优化方法。切表包括两种方式:横向分表和纵向分表。
其中,纵向分表比较有使用意义,但是分表会造成查询的负担。
纵向切表:字段较多时可以考虑,一般用处不大
横向切表:能有效降低表的大小,减少由于加锁导致的等待
查询会变复杂,尤其是需要排序的查询
日志分析:在数据库运行了较长一段时间以后,会积累大量的LOG日志,其实这里面的蕴涵的有用的信息量还是很大的。通过分析日志,可以找到系统性能的瓶颈,从而进一步寻找优化方案。
二级服务器架构:将数据库分为超类数据库和子类数据库。
将数据库分为超类数据库和子类数据库。超类数据库中存放公共的基本信息,这部分数据是用户访问频率最高的一部分数据,如登录名、密码等。子类数据库中存放的是大量的专用数据,如用户的个人爱好、家庭地址等信息。专用数据库量大,相应速度要求高,但是它的访问频率相比超类数据库低。