数据库数据处理性能提升技术

一、数据处理性能存在的问题

1、企业的数据都集中存储在数据库中,从海量的数据中查找和定位数据是非常耗时的;
2、数据集中存储后,所有用户都要来访问数据库,当很多用户同时访问数据库时,数据库服务器的负载就非常中。

二、数据处理过程


数据库数据处理性能提升技术_第1张图片

  • 所有处理要由CPU完成,但数据全部存储在磁盘上。CPU和磁盘很不匹配:CPU速度很快,磁盘速度很慢,相差天文数字(106)个数量级;
  • 磁盘有不可替代的特质:存储容量大;其上的数据不受系统故障影响;
  • 内存速度比磁盘高很多,起到缓冲作用,但其容量比磁盘小很多,其上的数据在发生死机或停电之类的故障时,数据丢失;
  • 数据库数据量通常比内存容量大很多;

三、数据库性能度量指标

1、事务吞吐量
单位时间内能够完成事务的数量;
2、响应时间
完成单件事务需要耗费的时间。

两个指标必须相提并论,不能单独来提

四、提高数据库性能的策略

挖掘和利用

  • 数据特性
  • 硬件特性
  • 以及数据访问特性

五、提高数据库性能的方法

与数据库设计有关的方法:
1、排序
2、索引


数据库数据处理性能提升技术_第2张图片

大块的数据变成了很小的索引(仅2行),缩小了很多很多倍,可以一次
性加载到内存里,迅速地找到想要的行,然后将行数据从磁盘读入内存。

没有索引,则要把大块数据全运输到内存,一个一个地比对,仅只极少的行有用。

创建索引时的注意事项

语法:

CREATE INDEXstudentIndexONstudent(dno, name);

正确地任用索引:

  • 不要对数据量少的表创建索引。因为读磁盘是以页(8k)为单位进行,如果表数据量只有几个页,索引就没意义。就像很少几页的文章,再给它搞个目录页也没有意义;
  • 对长字符串的字段,例如备注字段,不要创建索引,因为压缩比会小;
  • 对访问频繁的外键(作为查询条件,或者联接运算),应对其创建索引;
  • 对经常作为查询条件、联接运算、排序、分组、UNION,DISTINCT 的字段,对其创建索引;

哈希索引


数据库数据处理性能提升技术_第3张图片

当往表中添加一行记录时,对要哈希的字段计算哈希值,然后把该记录存储在磁盘空间中磁盘地址为该哈希值的地方。

查询数据行时,用户给出字段值,通过哈希计算,就可发现该记录的磁盘空间地址,直接读到对应的记录,不须要一行一行地去比对;对分布均匀特性的字段,哈希索引可行;例如“学号”字段;

3、连续的磁盘空间


数据库数据处理性能提升技术_第4张图片

  • 磁盘以片段为单位来存储数据;
  • 一个文件在磁盘上被划分成多个片段,磁盘选取空闲片段来存储表记录; 如果这些片段散布在整个盘面上,磁头就要反复来回走动,效率低。

处理方式


数据库数据处理性能提升技术_第5张图片

  • 对于表记录,如果连续地存储在一个磁道上,当读数据时,数据就可一个紧挨一个地读到,访问速度就会大大加快;
  • 你的计算机使用一段时间后,感觉明显变慢,也是这个道理;
  • 你可以做磁盘碎片整理,让每个文件的数据在磁盘上连续存储,这样就克服了磁头在盘面空间中到处来回移动,速度大大加快;

4、分类、聚簇


数据库数据处理性能提升技术_第6张图片

把关系非常紧密,但位于不同表中的行记录,在磁盘上临近存储。当它们做联接运算时,就能迅速得到结果;

5、内存缓冲


数据库数据处理性能提升技术_第7张图片

我们知道,我们的钱放在银行最可靠,小偷偷不走,也不会丢失。但是,如果每次用钱时,都到银行去取,很费时间(至少要1小时),效率很低。为了提高效率,我们会一次到银行取2000放在口袋里,要用钱时,马上就可拿到,效率极高。

数据存在磁盘上可靠。访问磁盘也是这个道理,很费时间。可事先把数据缓存在内存中,这样数据访问效率和性能就会极大地提高;

6、日志和磁盘分开存储


数据库数据处理性能提升技术_第8张图片

  • 当日志和数据库配置在一个物理磁盘上时,磁头一会要去数据库区读写要处理的数据,马上又要跳到日志区写日志,接着又要折回数据库区读写要处理的数据。磁头来回长距离倒腾,疲于奔命,
    效率极低,性能极差。
  • 当配置单独的日志磁盘时,正常运行时,日志具有只写不读的特点,而且是递增,磁头可一个挨一个地写,不用来回移动,性能得到极大提高。

底下的两种是完成封装在DBMS中,对数据库设计者和DBA透明

7、查询优化

数据库数据处理性能提升技术_第9张图片

查询优化并不明白,待探讨

8、并发执行


数据库数据处理性能提升技术_第10张图片

以上为个人的总结(搬运老师的PPT),有不妥当之处,请在评论中指出。

你可能感兴趣的:(性能,数据库,索引)