查询的时间开销
可以调整处理查询时数据库服务器执行的操作的一些响应时间效果(不是全部)。
以下成本可以通过优化的查询结构和适当的索引降低:
排序时间
数据不匹配
定点 ALTER TABLE
索引查找
有关如何优化特定的查询的信息,请参阅
提高个别查询性能
。
内存活动开销
数据库服务器只可以处理内存中的数据。它必须将行读入内存,该内存是用于依靠查询的过滤器评估那些行的内存。服务器找到满足那些过滤器的行之后,它会通过将所选列组合起来,在内存中准备一个输出行。
排序时间开销
排序既然需要磁盘工作量也需要内存中的工作量。内存中的工作量取决于排序的列数、组合的排序键的宽度和通过查询过滤器的行组合的数量。可以减少排序的成本。
行读取开销
当数据库服务器需要检查不在内存中的某一行时,它必须从磁盘读取该行。数据库服务器不只是读取一行;它要读取包含该行的整页。如果该行跨越多页,那么数据库服务器要读取所有这些页。
顺序访问开销
当数据库服务器按物理顺序读取某个表的行时,磁盘成本最低。
非顺序存取开销
磁盘设备非顺序读取表页时磁盘存取时间要远远超过该磁盘设备顺序读取同一表的时间。
索引查找开销
当数据库服务器通过索引找到一行时,将会产生额外的成本。索引存储在磁盘上,其各页必须同包含所想要的行的数据页面一起读入内存中。
定点 ALTER TABLE 开销
在某些情况下,执行 ALTER TABLE 语句时,数据库服务器将使用定点变更算法来修改每一行。变更表操作之后,数据库服务器将最新的定义插入行。如果查询访问还未转换成新的表定义的行,那么您可能会注意到您的个别查询的性能稍微有些下降,这是因为数据库服务器在返回每一行之前,都会将其在内存中重新格式化。
视图开销
复杂视图的运行会比预期更慢。
小表开销
如果一个表占用页数很少以至于它可完全保存在页缓冲区中,那么该表称为小表。对小表的操作一般要比对大表的操作快。
数据不匹配开销
如果在某一条件下使用的列的数据类型与 CREATE TABLE 语句中的列的定义不同,那么
SQL
语句可能会遇到额外的成本。
加密值开销
加密值将使用比相应的明文值更多的存储空间,因为除加密密钥外,所有对该值进行解密所需的信息将与该值一起存储。
GLS 功能开销
为某些数据集排序或建立索引会降低性能。
网络访问开销
跨网络移动数据造成了除直接磁盘存取以外的延迟。
父主题:
查询和查询优化器
上一主题:
可用内存对查询计划的影响
下一主题:
内存活动开销