第七十八章 SQL命令 TUNE TABLE

第七十八章 SQL命令 TUNE TABLE

基于代表性数据调优表。

大纲

TUNE TABLE tablename [ tune_options ]

参数

  • tablename - 要调优的现有表的名称。
    表名可以是限定的(schema.table),也可以是非限定的(table)。
    非限定表名接受默认模式名。
  • tune_options - 可选—如果指定,一个或多个TUNE TABLE选项,以任意顺序指定,由空格分隔。
    这些tune_options不区分大小写。

描述

TUNE TABLE命令根据表中当前的数据对现有表进行调优。
该数据应该代表表完全填充时所期望的数据。

TUNE TABLE根据代表性数据计算和设置表的块大小、选择性和范围大小。
通常,TUNE TABLE设置一个或多个这些值,并清除所有使用这个持久类(表)的缓存查询,以便查询将使用这些新值。
但是,如果TUNE TABLE没有更改这些值(例如,自上次对该表运行TUNE TABLE以来数据没有更改),则缓存查询不会被清除,该表的类定义也不会被标记为需要重新编译。

TUNE TABLE更新SQL表定义(因此需要特权来更改表定义)。
通常,TUNE TABLE还会更新相应的持久类定义。
这允许查询优化器使用调优后的值,而不需要进行类编译。
但是,如果部署了类,那么TUNE TABLE只更新SQL表定义;
查询优化器间接使用表定义中的调优值。

如果TUNE TABLE成功,它将SQLCODE设置为0
如果指定的表名不存在,TUNE TABLE将发出SQLCODE -30错误。

权限

TUNE TABLE命令是一个特权操作。
用户必须具有%ALTER_TABLE管理权限才能执行TUNE TABLE
如果不这样做,将导致%msgSQLCODE -99错误,User 'name' does not have %ALTER_TABLE privileges
如果拥有适当的权限,可以使用GRANT命令为用户或角色分配%ALTER_TABLE权限。
管理权限是特定于名称空间的。

用户必须对指定的表具有%ALTER权限。
如果用户是表的Owner(创建者),则自动授予该用户对该表的%ALTER权限。
否则,用户必须被授予%ALTER权限。
如果不这样做,将导致一个带有%msgSQLCODE -99错误。
可以通过调用%CHECKPRIV命令来确定当前用户是否具有%ALTER权限。
可以使用GRANT命令为指定的表分配%ALTER权限。

调表选项

  • %KEEP_UP_TO_DATE:如果未指定(默认值),则未设置修改后的类定义上的最新标志。
    这表明类定义已经过期,并且被标记为需要重新编译。
    如果指定,则类定义将保持标记为最新的。
    这是在活动系统上更改统计信息时的首选选项,因为它降低了重新编译表类定义的可能性。
  • %CLEAR_VALUES:如果指定了现有的SELECTIVITY, EXTENTSIZE等值将从类和表定义中清除。
    不指定此选项将提供默认的调优表行为。
  • %SAMPLE_PERCENT百分比:指定用于对TuneTable实用程序的数据进行抽样的表行的百分比。
    这个百分比可以指定为。####%;
    例如,在采样数据时,.1212%将导致TuneTable使用表中12%的行。
    指定大于0且小于等于100%的百分比值;
    超出此范围的值将发出SQLCODE -1错误。
    这个值通常不需要指定。
    仅当字段的潜在离群值不是均匀分布在整个表的行中时指定此值。
    注意,对于任何区段大小< 1000行的表,无论%SAMPLE_PERCENT值如何,整个区段都将由TuneTable使用。
  • %RECOMPILE_CQ:如果指定了,TuneTable将使用新的调优表统计信息重新编译缓存的查询类,而不仅仅是清除调优表的缓存查询。
    不指定此选项将提供默认的TuneTable行为。

如果指定的tune_options值不存在,TUNE TABLE将发出SQLCODE -25错误。
如果两次指定相同的tune_options值,TUNE TABLE将发出SQLCODE -326错误。

缓存查询

执行TUNE TABLE将创建一个缓存查询。
显示“Show Plan”表示没有创建查询计划。
未创建SQL语句。
缓存的查询对名称空间是通用的;
在具体的表格中没有列出。
可以使用缓存查询重新运行相同的TUNE TABLE语句。

执行TUNE TABLE将清除指定表的所有现有缓存查询,包括上次执行TUNE TABLE的缓存查询。
可以选择让TUNE TABLE使用新的TUNE TABLE值重新编译所有这些缓存的查询。

如果运行TUNE TABLE没有更改任何TUNE TABLE值,则不会清除缓存的查询。

运行调优表的其他方法

有两个其他接口运行Tune Table:

  • 通过使用Management Portal SQL接口Actions下拉列表,您可以在单个表或模式中的所有表上运行Tune Table
  • 为单个表或当前名称空间中的所有表调用$SYSTEM.SQL.Stats.Table.GatherTableStats()方法。

示例

下面的动态SQL示例调优一个表:

ClassMethod TuneTable()
{
    try {
        s mysql = "TUNE TABLE Sample.MyTest %KEEP_UP_TO_DATE"
        s tStatement = ##class(%SQL.Statement).%New()
        s qStatus = tStatement.%Prepare(mysql)
        if qStatus '= 1 {
            w "%Prepare failed:" 
            d $System.Status.DisplayError(qStatus) 
            q
        }
        s rset = tStatement.%Execute()
        if rset.%SQLCODE = 0 { 
            w !,"Executed Tune Table",! 
        } else { 
            s badSQL=##class(%Exception.SQL).%New(,rset.%SQLCODE,,rset.%Message)
            throw badSQL }
        ret
    }
    catch exp { 
        w "In the CATCH block",!
        if 1 = exp.%IsA("%Exception.SQL") {
            w "SQLCODE: ",exp.Code,!
            w "Message: ",exp.Data,! 
        } else { 
            w "Not an SQL exception",! 
        }
        ret
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容