1. 统计信息的重要性
sybase使用基于成本的Query优化器, 它使用表,index,columns的统计信息来估计Query的成本,选择最佳方法。
如果统计信息有误或者不准确,就可能导致SQL执行低效。
有些统计信息在执行update,insert时就会更新,但是有些需要执行update statistics命令时才会执行。
如果遇到性能问题,并且SQL查询计划看上去正确的时候,头一个要问的问题就是统计信息是否准确,是否需要update statistics.
我们可以使用optdiag命令来检查 上传执行update statistics的时间。
另一个常用的命令是 delete statistics, 删除一个index时,如果没有删除这个index相关的统计信息。如果key的存储与删掉的index有关,那么这个不准确的统计信息就导致一定的性能问题。
2. 存储统计信息的表: systabstats 和 sysstatistics 表
systabstats 作为对象存储表或索引的有关信息, 即大小、行数等等。 通过查询处理、数据定义语言和 update statistics 命令可对其进行更新。
sysstatistics 将与这些值有关的信息存储在特定列中。
optdiag 实用程序显示 systabstats 和 sysstatistics 表的统计信息。optdiag 也可用于更新 sysstatistics 的信息。只有系统管理员可以运行 optdiag。
optdiag [binary] [simulate] statistics
{-i input_file |
database[.owner[.[table[.column]]]]
[-o output_file]}
[-U username] [-P password]
[-I interfaces_file]
[-S server]
[-v] [-h] [-s] [-Tflag_value]
[-z language] [-J client_charset]
[-a display_charset]
3. optdiag 查询表\索引的统计信息
OptDiag/15.5/EBF 17218 SMP/P/NT (IX86)/Windows 2003/ase155/2391/32-bit/OPT/Mon Nov 09 14:32:38 2009
Adaptive Server Enterprise/15.5/EBF 17218 SMP/P/NT (IX86)/Windows 2003/ase155/2391/32-bit/OPT/Mon Nov 09 14:18:14 2009
Server name: "CNNBHZ1055"
Specified database: "re"
Specified table owner: not specified
Specified table: "inv_ref"
Specified column: not specified
Table owner: "dbo"
Table name: "inv_ref"
#########################################################
##OUTPUT FROM ASE12.5, NOT ASE15.5
#########################################################
Table owner: "dbo"
Statistics for table: "titles"
Data page count: 662
Empty data page count: 10
Data row count: 4986.0000000000000000
Forwarded row count: 18.0000000000000000
Deleted row count: 87.0000000000000000
Data page CR count: 86.0000000000000000
OAM + allocation page count: 5
First extent data pages: 3
Data row size: 238.8634175691937287
Derived statistics:
Data page cluster ratio: 0.9896907216494846
###################################################
Statistics for index: "inv_ref_Key" (clustered)
Index column list: "inv_ref_id", "owner_id"
Data page count: 2111
Empty data page count: 0
Data row count: 35360.0000000000000000
Forwarded row count: 0.0000000000000000
Deleted row count: 0.0000000000000000
Data page CR count: 264.0000000000000000
OAM + allocation page count: 68
First extent leaf pages: 0
Data row size: 114.7445984162895900
Index height: 2
Parallel join degree: 0.0000000000000000
Unused page count: 8
OAM page count: 1
Derived statistics:
Data page cluster ratio: 1.0000000000000000
Space utilization: 0.9533793601918899
Large I/O efficiency: 1.0000000000000000
Statistics for index: "inv_ref_idx1" (nonclustered)
Index column list: "search_name"
Leaf count: 595
Empty leaf page count: 0
Data page CR count: 30147.0000000000000000
Index page CR count: 77.0000000000000000
Data row CR count: 32243.0000000000000000
First extent leaf pages: 0
Leaf row size: 33.5776300904977350
Index height: 2
Derived statistics:
Data page cluster ratio: 0.0655430126020201
Index page cluster ratio: 0.9961538461538462
Data row cluster ratio: 0.0937471803663268
Space utilization: 0.9898167600373483
Large I/O efficiency: 0.9961685823754789