cpu_index_tuple_cost和cpu_tuple_cost的值不同的原因是什么? 当读者已经在阅读那一页时,它不应该花费同样多的时间吗?
我查看了文档(https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-CPU-TUPLE-COST),我认为cpuindex_tuple_ost和cputuple_ost相同.
cpu_index_tuple_cost和cpu_tuple_cost的值不同的原因是什么? 当读者已经在阅读那一页时,它不应该花费同样多的时间吗?
我查看了文档(https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-CPU-TUPLE-COST),我认为cpuindex_tuple_ost和cputuple_ost相同.
"Reader Head"和"Page"似乎表明磁盘I/O在这里起了作用,但它的成本参数是random_page_cost
和seq_page_cost
.cpu_index_tuple_cost
和cpu_tuple_cost
大约是处理单个索引或表项所花费的CPU时间.现在,索引元组通常比表元组小得多,因此估计较低的成本是合理的.
我深入研究了这个参数的历史,它是在2000年引入的,值为0.001,是cpu_tuple_cost
值的十分之一.后来,人们认为这个值太小(见第discussion条),从2006年开始,第commit e4de635a2b条将缺省值更改为0.005.