Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aWenM-0003cH-B5 for pgsql-admin@arkaria.postgresql.org; Fri, 19 Feb 2016 06:44:05 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aWenL-00078i-Tz for pgsql-admin@arkaria.postgresql.org; Fri, 19 Feb 2016 06:44:03 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aWeld-0004zN-S2 for pgsql-admin@postgresql.org; Fri, 19 Feb 2016 06:42:18 +0000 Received: from [123.125.50.132] (helo=m50-132.163.com) by makus.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1aWelT-0002Hp-J0 for pgsql-admin@postgresql.org; Fri, 19 Feb 2016 06:42:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:Mime-Version:Message-ID; bh=fF2js h+CJ+B1FZJYdGP91qtHQIxU0k/XmJKWYAoIkHM=; b=TOVYwRpV4apmCHpPHu4qN BTCSg1LMksdGmhevNogVVO8DVx87bk6xHxOThd4b9fvKpGj7SK/hMK0w35K81mxG OyvamKFPjr2928Hep8TKLDUn5RfDehsz6DQjlOOdMfqMcIbkrNDwd7zzRl0NPz+V 4OadnNryWk1xDlcp6R/jVk= Received: from USER-20150730MS (unknown [123.232.108.135]) by smtp2 (Coremail) with SMTP id DNGowECpHmEkucZWjOS_AA--.18778S2; Fri, 19 Feb 2016 14:41:41 +0800 (CST) Date: Fri, 19 Feb 2016 14:41:43 +0800 From: "gaoqiangdba@163.com" To: nunks Cc: pgsql-admin Subject: Re: ANALYZE'ing table hierarchies References: X-Priority: 3 X-GUID: 782ADBB5-DD8E-48D8-B6DB-3260ADA0050C X-Has-Attach: no X-Mailer: Foxmail 7, 2, 7, 21[cn] Mime-Version: 1.0 Message-ID: <201602191441422069485@163.com> Content-Type: multipart/alternative; boundary="----=_001_NextPart611155358357_=----" X-CM-TRANSID: DNGowECpHmEkucZWjOS_AA--.18778S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxGrW7Gw47ur4UWw48uFWktFb_yoW5Cr13pF 13GrySyr15Ga47Cr97JF47Ar15Jr4DJF45t3Z8Aw1xt3WrZwn7XrWIyay8tFWDKayIqayq vFWUt3WkJr4UJF7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jFHq7UUUUU= X-Originating-IP: [123.232.108.135] X-CM-SenderInfo: 5jdr1xhdqjvurd6rljoofrz/1tbiXQYUI1WBQdfwjQAAsT X-Host-Lookup-Failed: Reverse DNS lookup failed for 123.125.50.132 (deferred) X-Pg-Spam-Score: -0.2 (/) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-admin Precedence: bulk Sender: pgsql-admin-owner@postgresql.org This is a multi-part message in MIME format. ------=_001_NextPart611155358357_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGksTnVua3MNCg0KSSBoYXZlIGEgdGVzdCBqdXN0IG5vdyxhcyBmb2xsb3dzOg0KSG9wZSB0byBo ZWxwIHlvdSENCg0KbXVzaWM9PiBjcmVhdGUgdGFibGUgbXVzaWMoaWQgaW50LG5hbWUgdGV4dCxz dHlsZSB0ZXh0KTsNCkNSRUFURSBUQUJMRQ0KbXVzaWM9PiBjcmVhdGUgdGFibGUgcm9jayAoY2hl Y2soc3R5bGUgPSAncm9jaycpKSBpbmhlcml0cyhtdXNpYyk7DQpDUkVBVEUgVEFCTEUNCm11c2lj PT4gY3JlYXRlIHRhYmxlIHBvcCAoY2hlY2soc3R5bGUgPSAncG9wJykpIGluaGVyaXRzKG11c2lj KTsNCkNSRUFURSBUQUJMRQ0KbXVzaWM9PiBjcmVhdGUgdGFibGUgY2xhc3NpYyAoY2hlY2soc3R5 bGUgPSAnY2xhc3NpYycpKSBpbmhlcml0cyhtdXNpYyk7DQpDUkVBVEUgVEFCTEUNCm11c2ljPT4g IGNyZWF0ZSB0YWJsZSBqYXp6IChjaGVjayhzdHlsZSA9ICdqYXp6JykpIGluaGVyaXRzKG11c2lj KTsNCkNSRUFURSBUQUJMRQ0KDQoNCm11c2ljPT4gXGRTKyBtdXNpYw0KICAgICAgICAgICAgICAg ICAgICAgICAgICBUYWJsZSAiZXJpYy5tdXNpYyINCiBDb2x1bW4gfCAgVHlwZSAgIHwgTW9kaWZp ZXJzIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiANCi0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0NCiBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgcGxhaW4gICAgfCAgICAgICAgICAg ICAgfCANCiBuYW1lICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAgICAg ICAgICAgfCANCiBzdHlsZSAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgZXh0ZW5kZWQgfCAgICAg ICAgICAgICAgfCANCkNoaWxkIHRhYmxlczogY2xhc3NpYywNCiAgICAgICAgICAgICAgamF6eiwN CiAgICAgICAgICAgICAgcG9wLA0KICAgICAgICAgICAgICByb2NrDQoNCm11c2ljPT4gY3JlYXRl IGluZGV4IG11c2ljX3BvcF9pZCBvbiBwb3AgKGlkKTsNCkNSRUFURSBJTkRFWA0KbXVzaWM9PiAg Y3JlYXRlIGluZGV4IG11c2ljX3JvY2tfaWQgb24gcm9jayAoaWQpOw0KQ1JFQVRFIElOREVYDQpt dXNpYz0+IGNyZWF0ZSBpbmRleCBtdXNpY19qYXp6X2lkIG9uIGphenogKGlkKTsNCkNSRUFURSBJ TkRFWA0KbXVzaWM9PiBjcmVhdGUgaW5kZXggbXVzaWNfY2xhc3NpY19pZCBvbiBjbGFzc2ljIChp ZCk7DQpDUkVBVEUgSU5ERVgNCg0KDQptdXNpYz0+ICBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElP TiBtdXNpY19pbnNlcnRfdHJpZ2dlcigpDQptdXNpYy0+ICBSRVRVUk5TIFRSSUdHRVIgQVMgDQpt dXNpYy0+ICAkJA0KbXVzaWMkPiAgQkVHSU4NCm11c2ljJD4gICAgICAgSUYgKE5FVy5zdHlsZSA9 ICdyb2NrJykgVEhFTg0KbXVzaWMkPiAgICAgICAgICAgSU5TRVJUIElOVE8gcm9jayBWQUxVRVMg KE5FVy4qKTsNCm11c2ljJD4gICAgICAgRUxTRUlGIChORVcuc3R5bGUgPSAncG9wJykgVEhFTg0K bXVzaWMkPiAgICAgICAgICAgSU5TRVJUIElOVE8gcG9wIFZBTFVFUyAoTkVXLiopOw0KbXVzaWMk PiAgICAgICBFTFNFSUYgKE5FVy5zdHlsZSA9ICdwb3AnKSBUSEVODQptdXNpYyQ+ICAgICAgICAg ICBJTlNFUlQgSU5UTyBwb3AgVkFMVUVTIChORVcuKik7DQptdXNpYyQ+ICAgICAgIEVMU0VJRiAo TkVXLnN0eWxlID0gJ2phenonKSBUSEVODQptdXNpYyQ+ICAgICAgICAgICBJTlNFUlQgSU5UTyBq YXp6IFZBTFVFUyAoTkVXLiopOw0KbXVzaWMkPiAgICAgICBFTFNFSUYgKE5FVy5zdHlsZSA9ICdj bGFzc2ljJykgVEhFTg0KbXVzaWMkPiAgICAgICAgICAgSU5TRVJUIElOVE8gY2xhc3NpYyBWQUxV RVMgKE5FVy4qKTsNCm11c2ljJD4gICAgICAgRU5EIElGOw0KbXVzaWMkPiAgICAgICBSRVRVUk4g TlVMTDsNCm11c2ljJD4gIEVORDsNCm11c2ljJD4gICQkDQptdXNpYy0+ICBMQU5HVUFHRSBwbHBn c3FsIDsNCkNSRUFURSBGVU5DVElPTg0KDQoNCm11c2ljPT4gQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0 X211c2ljX3RyaWdnZXIgDQptdXNpYy0+IEJFRk9SRSBJTlNFUlQgT04gIG11c2ljDQptdXNpYy0+ IEZPUiBFQUNIIHJvdyBFWEVDVVRFIFBST0NFRFVSRSBtdXNpY19pbnNlcnRfdHJpZ2dlcigpIDsN CkNSRUFURSBUUklHR0VSDQoNCg0KbXVzaWM9PiBpbnNlcnQgaW50byBtdXNpYyB2YWx1ZXMoMiwn SGF2ZSBhIE5pY2UgRGF5JywncG9wJyk7DQpJTlNFUlQgMCAwDQptdXNpYz0+IGluc2VydCBpbnRv IG11c2ljIHZhbHVlcygxLCcyMSBHdW4nLCdyb2NrJyk7DQpJTlNFUlQgMCAwDQoNCg0KbXVzaWM9 PiBzZWxlY3QgKiBmcm9tIG11c2ljOw0KIGlkIHwgICAgICBuYW1lICAgICAgIHwgc3R5bGUgDQot LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0NCiAgMSB8IDIxIEd1biAgICAgICAgICB8IHJv Y2sNCiAgMiB8IEhhdmUgYSBOaWNlIERheSB8IHBvcA0KKDIgcm93cykNCg0KbXVzaWM9PiBzZWxl Y3QgKiBmcm9tIHBvcA0KbXVzaWMtPiA7DQogaWQgfCAgICAgIG5hbWUgICAgICAgfCBzdHlsZSAN Ci0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQ0KICAyIHwgSGF2ZSBhIE5pY2UgRGF5IHwg cG9wDQooMSByb3cpDQoNCm11c2ljPT4gc2VsZWN0ICogZnJvbSByb2NrOw0KIGlkIHwgIG5hbWUg IHwgc3R5bGUgDQotLS0tKy0tLS0tLS0tKy0tLS0tLS0NCiAgMSB8IDIxIEd1biB8IHJvY2sNCigx IHJvdykNCg0KbXVzaWM9PiBhbmFseXplIHZlcmJvc2UgbXVzaWMNCm11c2ljLT4gOw0KSU5GTzog IGFuYWx5emluZyAiZXJpYy5tdXNpYyINCklORk86ICAibXVzaWMiOiBzY2FubmVkIDAgb2YgMCBw YWdlcywgY29udGFpbmluZyAwIGxpdmUgcm93cyBhbmQgMCBkZWFkIHJvd3M7IDAgcm93cyBpbiBz YW1wbGUsIDAgZXN0aW1hdGVkIHRvdGFsIHJvd3MNCklORk86ICBhbmFseXppbmcgImVyaWMubXVz aWMiIGluaGVyaXRhbmNlIHRyZWUNCklORk86ICAicm9jayI6IHNjYW5uZWQgMSBvZiAxIHBhZ2Vz LCBjb250YWluaW5nIDEgbGl2ZSByb3dzIGFuZCAwIGRlYWQgcm93czsgMSByb3dzIGluIHNhbXBs ZSwgMSBlc3RpbWF0ZWQgdG90YWwgcm93cw0KSU5GTzogICJwb3AiOiBzY2FubmVkIDEgb2YgMSBw YWdlcywgY29udGFpbmluZyAxIGxpdmUgcm93cyBhbmQgMCBkZWFkIHJvd3M7IDEgcm93cyBpbiBz YW1wbGUsIDEgZXN0aW1hdGVkIHRvdGFsIHJvd3MNCkFOQUxZWkUNCg0KbXVzaWM9PiBzZWxlY3Qg cmVsbmFtZSwgbGFzdF9hbmFseXplIGZyb20gcGdfc3RhdF91c2VyX3RhYmxlcyB3aGVyZSByZWxu YW1lID0gJ211c2ljJzsNCiByZWxuYW1lIHwgICAgICAgICBsYXN0X2FuYWx5emUgICAgICAgICAg DQotLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIG11c2ljICAgfCAy MDE2LTAyLTE4IDIyOjI5OjU2LjUyODc1OC0wOA0KKDEgcm93KQ0KDQptdXNpYz0+IHNlbGVjdCBy ZWxuYW1lLCBsYXN0X2FuYWx5emUgZnJvbSBwZ19zdGF0X3VzZXJfdGFibGVzIHdoZXJlIHJlbG5h bWUgPSAncG9wJzsNCiByZWxuYW1lIHwgbGFzdF9hbmFseXplIA0KLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tDQogcG9wICAgICB8IA0KKDEgcm93KQ0KDQptdXNpYz0+IHNlbGVjdCByZWxuYW1lLCBs YXN0X2FuYWx5emUgZnJvbSBwZ19zdGF0X3VzZXJfdGFibGVzIHdoZXJlIHJlbG5hbWUgPSAncm9j ayc7DQogcmVsbmFtZSB8IGxhc3RfYW5hbHl6ZSANCi0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQ0K IHJvY2sgICAgfCANCigxIHJvdykNCg0KDQptdXNpYz0+IGFuYWx5emUgdmVyYm9zZSBwb3A7DQpJ TkZPOiAgYW5hbHl6aW5nICJlcmljLnBvcCINCklORk86ICAicG9wIjogc2Nhbm5lZCAxIG9mIDEg cGFnZXMsIGNvbnRhaW5pbmcgMSBsaXZlIHJvd3MgYW5kIDAgZGVhZCByb3dzOyAxIHJvd3MgaW4g c2FtcGxlLCAxIGVzdGltYXRlZCB0b3RhbCByb3dzDQpBTkFMWVpFDQptdXNpYz0+IHNlbGVjdCBy ZWxuYW1lLCBsYXN0X2FuYWx5emUgZnJvbSBwZ19zdGF0X3VzZXJfdGFibGVzIHdoZXJlIHJlbG5h bWUgPSAncm9jayc7DQogcmVsbmFtZSB8IGxhc3RfYW5hbHl6ZSANCi0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLQ0KIHJvY2sgICAgfCANCigxIHJvdykNCg0KbXVzaWM9PiBzZWxlY3QgcmVsbmFtZSwg bGFzdF9hbmFseXplIGZyb20gcGdfc3RhdF91c2VyX3RhYmxlcyB3aGVyZSByZWxuYW1lID0gJ3Bv cCc7DQogcmVsbmFtZSB8ICAgICAgICAgbGFzdF9hbmFseXplICAgICAgICAgIA0KLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiBwb3AgICAgIHwgMjAxNi0wMi0xOCAy MjozMTo1NS42NjY1NTYtMDgNCigxIHJvdykNCg0KbXVzaWM9PiBhbmFseXplIHZlcmJvc2Ugcm9j azsNCklORk86ICBhbmFseXppbmcgImVyaWMucm9jayINCklORk86ICAicm9jayI6IHNjYW5uZWQg MSBvZiAxIHBhZ2VzLCBjb250YWluaW5nIDEgbGl2ZSByb3dzIGFuZCAwIGRlYWQgcm93czsgMSBy b3dzIGluIHNhbXBsZSwgMSBlc3RpbWF0ZWQgdG90YWwgcm93cw0KQU5BTFlaRQ0KbXVzaWM9PiBz ZWxlY3QgcmVsbmFtZSwgbGFzdF9hbmFseXplIGZyb20gcGdfc3RhdF91c2VyX3RhYmxlcyB3aGVy ZSByZWxuYW1lID0gJ3JvY2snOw0KIHJlbG5hbWUgfCAgICAgICAgIGxhc3RfYW5hbHl6ZSAgICAg ICAgICANCi0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogcm9jayAg ICB8IDIwMTYtMDItMTggMjI6MzQ6MTYuNTI2NTU4LTA4DQooMSByb3cpDQoNCg0KDQoNCmdhb3Fp YW5nZGJhQDE2My5jb20NCiANCkZyb206IG51bmtzDQpEYXRlOiAyMDE2LTAyLTE5IDEwOjAyDQpU bzogcGdzcWwtYWRtaW4NClN1YmplY3Q6IFtBRE1JTl0gQU5BTFlaRSdpbmcgdGFibGUgaGllcmFy Y2hpZXMNCkhlbGxvLA0KIA0KSSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgcnVubmluZyBBTkFMWVpF IG9uIHRhYmxlIGhpZXJhcmNoaWVzLg0KIA0KVGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgcGFy dGl0aW9uaW5nIG1lbnRpb25zIHRoZSBuZWVkIHRvIG1hbnVhbGx5IGlzc3VlIFZBQ1VVTSBhbmQg QU5BTFlaRXMgZm9yIGVhY2ggcGFydGl0aW9uIChodHRwOi8vd3d3LnBvc3RncmVzcWwub3JnL2Rv Y3MvOS40L3N0YXRpYy9kZGwtcGFydGl0aW9uaW5nLmh0bWwjRERMLVBBUlRJVElPTklORy1DQVZF QVRTKSwgd2hpbGUgdGhlIHBhZ2UgZm9yIEFOQUxZWkUgKGh0dHA6Ly93d3cucG9zdGdyZXNxbC5v cmcvZG9jcy85LjQvc3RhdGljL3NxbC1hbmFseXplLmh0bWwpIG1lbnRpb25zIGl0IGRvZXMgZ2F0 aGVyIHN0YXRpc3RpY3MgZm9yIHRoZSBtYXN0ZXIgdGFibGUgYW5kIGl0cyBjaGlsZHJlbi4NCiAN CldoZW4gSSBBTkFMWVpFIGEgbWFzdGVyIHRhYmxlIFBvc3RncmVTUUwgc2F5cyBpdCBpcyB3b3Jr aW5nIG9uIHRoZSBlbnRpcmUgaGllcmFyY2h5IGFuZCBhdXRvbWF0aWNhbGx5IEFOQUxZWkVzIHRo ZSBjaGlsZCB0YWJsZXMuIEhvd2V2ZXIsIHRoZSBsYXN0X2FuYWx5emUgY29sdW1uIHN0YXlzIGVt cHR5IGZvciB0aGUgY2hpbGQgdGFibGVzIG9uIHBnX3N0YXRfdXNlcl90YWJsZXMuDQogDQpJIGZp bmQgdGhpcyBzb21ld2hhdCBjb25mdXNpbmcsIHdoYXQgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9y PyBJIGZpZ3VyZSB0aGUgY2hpbGQgdGFibGVzIGhhdmUgYmVlbiBwcm9wZXJseSBBTkFMWVpFZCwg YnV0IEkgY2FuJ3QgZmluZCBpdCByZWdpc3RlcmVkIGFueXdoZXJlLiBJdCB3b3VsZCBiZSBuaWNl IHRvIGJlIGFibGUgdG8gcGFyc2UgcGdfc3RhdF91c2VyX3RhYmxlcyBmb3IgYW5hbHl6ZSBzdGF0 aXN0aWNzIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGhpZXJhcmNoaWVzLCBzaW5jZSBl YWNoIHBhcnRpdGlvbiBzZWVtcyB0byBoYXZlIGl0cyBvd24gc3RhdGlzdGljcyBmb3IgZXZlcnl0 aGluZyBlbHNlLg0KIA0KICAgICAgbnVua3M9IyBhbmFseXplIHZlcmJvc2UgdGIwNTsNCiAgICAg IElORk86ICBhbmFseXppbmcgInB1YmxpYy50YjA1Ig0KICAgICAgSU5GTzogICJ0YjA1Ijogc2Nh bm5lZCAwIG9mIDAgcGFnZXMsIGNvbnRhaW5pbmcgMCBsaXZlIHJvd3MgYW5kIDAgZGVhZCByb3dz OyAwIHJvd3MgaW4gc2FtcGxlLCAwIGVzdGltYXRlZCB0b3RhbCByb3dzDQogICAgICBJTkZPOiAg YW5hbHl6aW5nICJwdWJsaWMudGIwNSIgaW5oZXJpdGFuY2UgdHJlZQ0KICAgICAgSU5GTzogICJ0 YjA1XzIwMTYiOiBzY2FubmVkIDE2NSBvZiAxNjUgcGFnZXMsIGNvbnRhaW5pbmcgNzQ2NSBsaXZl IHJvd3MgYW5kIDQ1NSBkZWFkIHJvd3M7IDc0NjUgcm93cyBpbiBzYW1wbGUsIDc0NjUgZXN0aW1h dGVkIHRvdGFsIHJvd3MNCiAgICAgIElORk86ICAidGIwNV8yMDE1Ijogc2Nhbm5lZCAzODEgb2Yg MzgxIHBhZ2VzLCBjb250YWluaW5nIDE2MjgxIGxpdmUgcm93cyBhbmQgMTUwNCBkZWFkIHJvd3M7 IDE2MjgxIHJvd3MgaW4gc2FtcGxlLCAxNjI4MSBlc3RpbWF0ZWQgdG90YWwgcm93cw0KICAgICAg QU5BTFlaRQ0KICAgICAgDQogICAgICBudW5rcz0jIHNlbGVjdCByZWxuYW1lLCBsYXN0X2FuYWx5 emUgZnJvbSBwZ19zdGF0X3VzZXJfdGFibGVzIHdoZXJlIHJlbG5hbWUgbGlrZSAndGIwNSUnOw0K ICAgICAgICByZWxuYW1lICB8ICAgICAgICAgbGFzdF9hbmFseXplDQogICAgICAtLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgICAgdGIwNSAgICAgIHwgMjAx Ni0wMi0xOCAyMjo0NzozMi43NzAwNzYtMDINCiAgICAgICB0YjA1XzIwMTYgfA0KICAgICAgIHRi MDVfMjAxNSB8DQogICAgICAoMyByb3dzKQ0KIA0KICAgICAgbnVua3M9IyBcZCsgdGIwNTsNCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy50YjA1Ig0KICAgICAgICAgICAgICAgQ29sdW1uICAgICAgICB8ICAgICAg ICAgICAgVHlwZSAgICAgICAgICAgICB8IE1vZGlmaWVycyB8IFN0b3JhZ2UgIHwgU3RhdHMgdGFy Z2V0IHwgRGVzY3JpcHRpb24NCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0NCiAgICAgICAgYSAgICAgICAgICAgICAgICAgIHwgY2hhcmFjdGVyIHZh cnlpbmcoOCkgICAgICAgIHwgbm90IG51bGwgIHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfA0K ICAgICAgICBiICAgICAgICAgICAgICAgICAgfCBkYXRlICAgICAgICAgICAgICAgICAgICAgICAg fCBub3QgbnVsbCAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8DQogICAgICAgIGMgICAgICAg ICAgICAgICAgICB8IHRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZSB8IG5vdCBudWxsICB8IHBs YWluICAgIHwgICAgICAgICAgICAgIHwNCiAgICAgICAgZCAgICAgICAgICAgICAgICAgIHwgdGlt ZXN0YW1wIHdpdGhvdXQgdGltZSB6b25lIHwgbm90IG51bGwgIHwgcGxhaW4gICAgfCAgICAgICAg ICAgICAgfA0KICAgICAgICBlICAgICAgICAgICAgICAgICAgfCBiaWdpbnQgICAgICAgICAgICAg ICAgICAgICAgfCBub3QgbnVsbCAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8DQogICAgICAg IGYgICAgICAgICAgICAgICAgICB8IGJpZ2ludCAgICAgICAgICAgICAgICAgICAgICB8IG5vdCBu dWxsICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwNCiAgICAgICAgZyAgICAgICAgICAgICAg ICAgIHwgYmlnaW50ICAgICAgICAgICAgICAgICAgICAgIHwgbm90IG51bGwgIHwgcGxhaW4gICAg fCAgICAgICAgICAgICAgfA0KICAgICAgICBoICAgICAgICAgICAgICAgICAgfCBiaWdpbnQgICAg ICAgICAgICAgICAgICAgICAgfCBub3QgbnVsbCAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 DQogICAgICAgIGkgICAgICAgICAgICAgICAgICB8IGJpZ2ludCAgICAgICAgICAgICAgICAgICAg ICB8IG5vdCBudWxsICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwNCiAgICAgICAgaiAgICAg ICAgICAgICAgICAgIHwgYmlnaW50ICAgICAgICAgICAgICAgICAgICAgIHwgbm90IG51bGwgIHwg cGxhaW4gICAgfCAgICAgICAgICAgICAgfA0KICAgICAgICBrICAgICAgICAgICAgICAgICAgfCBi aWdpbnQgICAgICAgICAgICAgICAgICAgICAgfCBub3QgbnVsbCAgfCBwbGFpbiAgICB8ICAgICAg ICAgICAgICB8DQogICAgICAgIGwgICAgICAgICAgICAgICAgICB8IGJpZ2ludCAgICAgICAgICAg ICAgICAgICAgICB8IG5vdCBudWxsICB8IHBsYWluICAgIHwgICAgICAgICAgICAgIHwNCiAgICAg ICAgbSAgICAgICAgICAgICAgICAgIHwgYmlnaW50ICAgICAgICAgICAgICAgICAgICAgIHwgbm90 IG51bGwgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfA0KICAgICAgICBuICAgICAgICAgICAg ICAgICAgfCBiaWdpbnQgICAgICAgICAgICAgICAgICAgICAgfCBub3QgbnVsbCAgfCBwbGFpbiAg ICB8ICAgICAgICAgICAgICB8DQogICAgICAgIG8gICAgICAgICAgICAgICAgICB8IGJpZ2ludCAg ICAgICAgICAgICAgICAgICAgICB8IG5vdCBudWxsICB8IHBsYWluICAgIHwgICAgICAgICAgICAg IHwNCiAgICAgICAgcCAgICAgICAgICAgICAgICAgIHwgYmlnaW50ICAgICAgICAgICAgICAgICAg ICAgIHwgbm90IG51bGwgIHwgcGxhaW4gICAgfCAgICAgICAgICAgICAgfA0KICAgICAgICBxICAg ICAgICAgICAgICAgICAgfCBiaWdpbnQgICAgICAgICAgICAgICAgICAgICAgfCBub3QgbnVsbCAg fCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8DQogICAgICAgIHIgICAgICAgICAgICAgICAgICB8 IGJpZ2ludCAgICAgICAgICAgICAgICAgICAgICB8IG5vdCBudWxsICB8IHBsYWluICAgIHwgICAg ICAgICAgICAgIHwNCiAgICAgIEluZGV4ZXM6DQogICAgICAgICAgICAidGIwNV9wa2V5IiBQUklN QVJZIEtFWSwgYnRyZWUgKGEsIGIpDQogICAgICBUcmlnZ2VyczoNCiAgICAgICAgICAgIHRyX3Bh cnRpdGlvbl90YjA1IEJFRk9SRSBJTlNFUlQgT04gdGIwNSBGT1IgRUFDSCBST1cgRVhFQ1VURSBQ Uk9DRURVUkUgZm5fcGFydGl0aW9uX3RiMDUoKQ0KICAgICAgQ2hpbGQgdGFibGVzOiB0YjA1XzIw MTUsDQogICAgICAgICAgICAgICAgICAgICAgICAgIHRiMDVfMjAxNg0KIA0KVGhhbmtzIQ0KIA0K TnVua3MNCg== ------=_001_NextPart611155358357_=---- Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable =0A
Hi,Nunks
<= br>
I have a test just now,as follows:
Hope to help yo= u!

music=3D> create table music(id int= ,name text,style text);
CREATE TABLE
music=3D>&nbs= p;create table rock (check(style =3D 'rock'))&nbs= p;inherits(music);
CREATE TABLE
music=3D> create t= able pop (check(style =3D 'pop')) inherits(music)= ;
CREATE TABLE
music=3D> create table classic=  (check(style =3D 'classic')) inherits(music);
CREA= TE TABLE
music=3D>  create table jazz = (check(style =3D 'jazz')) inherits(music);
CREATE T= ABLE


music=3D> \dS+ = music
           = ;            &= nbsp;  Table "eric.music"
 Column |  = ;Type   | Modifiers | Storage  |&n= bsp;Stats target | Description 
--------+---------+= -----------+----------+--------------+-------------
 id  = ;   | integer |     &nbs= p;     | plain    | = ;            &= nbsp;| 
 name   | text   &= nbsp;|           |&= nbsp;extended |         =      | 
 style  | tex= t    |        =    | extended |     &nbs= p;        | 
Child ta= bles: classic,
        &nb= sp;     jazz,
     &n= bsp;        pop,
  &n= bsp;           rock=

music=3D> create index music_pop_id on = ;pop (id);
CREATE INDEX
music=3D>  create&nbs= p;index music_rock_id on rock (id);
CREATE IND= EX
music=3D> create index music_jazz_id on = jazz (id);
CREATE INDEX
music=3D> create inde= x music_classic_id on classic (id);
CREATE IND= EX


music=3D>  CREATE=  OR REPLACE FUNCTION music_insert_trigger()
music-&= gt;  RETURNS TRIGGER AS 
music->  = ;$$
music$>  BEGIN
music$>    &n= bsp;  IF (NEW.style =3D 'rock') THEN
musi= c$>           IN= SERT INTO rock VALUES (NEW.*);
music$> &nbs= p;     ELSEIF (NEW.style =3D 'pop'= ) THEN
music$>        &= nbsp;  INSERT INTO pop VALUES (NEW.*);
mu= sic$>       ELSEIF (NEW.style&n= bsp;=3D 'pop') THEN
music$>     &= nbsp;     INSERT INTO pop VALUES&n= bsp;(NEW.*);
music$>       ELSEIF=  (NEW.style =3D 'jazz') THEN
music$>  =          INSERT INTO&nbs= p;jazz VALUES (NEW.*);
music$>    &nbs= p;  ELSEIF (NEW.style =3D 'classic') THENmusic$>          &nb= sp;INSERT INTO classic VALUES (NEW.*);
music$>&n= bsp;      END IF;
music$> &n= bsp;     RETURN NULL;
music$> &nb= sp;END;
music$>  $$
music->  LANGUAGE = ;plpgsql ;
CREATE FUNCTION

<= div>
music=3D> CREATE TRIGGER insert_music_trigger&nbs= p;
music-> BEFORE INSERT ON  music
music= -> FOR EACH row EXECUTE PROCEDURE music_i= nsert_trigger() ;
CREATE TRIGGER


music=3D> = ;insert into music values(2,'Have a Nice Day= ','pop');
INSERT 0 0
music=3D> insert into&nb= sp;music values(1,'21 Gun','rock');
INSERT 0 0


music=3D> select * = from music;
 id |      nam= e       | style 
----+----= -------------+-------
  1 | 21 Gun  =         | rock
  = ;2 | Have a Nice Day | pop
(2 r= ows)

music=3D> select * from pop
music-&g= t; ;
 id |      name =       | style 
----+-----------= ------+-------
  2 | Have a Nice Day=  | pop
(1 row)

music=3D> select *&nb= sp;from rock;
 id |  name  | st= yle 
----+--------+-------
  1 | 21 Gu= n | rock
(1 row)

music=3D> analyze v= erbose music
music-> ;
INFO:  analyzing = "eric.music"
INFO:  "music": scanned 0 of = ;0 pages, containing 0 live rows and 0&= nbsp;dead rows; 0 rows in sample, 0 est= imated total rows
INFO:  analyzing "eric.music= " inheritance tree
INFO:  "rock": scanned = ;1 of 1 pages, containing 1 live rows&n= bsp;and 0 dead rows; 1 rows in sample,&= nbsp;1 estimated total rows
INFO:  "pop": = ;scanned 1 of 1 pages, containing 1 liv= e rows and 0 dead rows; 1 rows in&= nbsp;sample, 1 estimated total rows
ANALYZE

= music=3D> select relname, last_analyze from pg= _stat_user_tables where relname =3D 'music';
 = relname |         last_a= nalyze          
----= -----+-------------------------------
 music   |&nb= sp;2016-02-18 22:29:56.528758-08
(1 row)

music=3D>&= nbsp;select relname, last_analyze from pg_stat_user_ta= bles where relname =3D 'pop';
 relname |&= nbsp;last_analyze 
---------+--------------
 pop &nbs= p;   | 
(1 row)

music=3D> selec= t relname, last_analyze from pg_stat_user_tables = where relname =3D 'rock';
 relname | last= _analyze 
---------+--------------
 rock   =  | 
(1 row)


music=3D> analyze ve= rbose pop;
INFO:  analyzing "eric.pop"
INFO:&nbs= p; "pop": scanned 1 of 1 pages, contain= ing 1 live rows and 0 dead rows; 1=  rows in sample, 1 estimated total rows=
ANALYZE
music=3D> select relname, last_analyze&nb= sp;from pg_stat_user_tables where relname =3D 'ro= ck';
 relname | last_analyze 
---------+--------= ------
 rock    | 
(1 row)
music=3D> select relname, last_analyze from p= g_stat_user_tables where relname =3D 'pop';
 r= elname |         last_an= alyze          
-----= ----+-------------------------------
 pop    &= nbsp;| 2016-02-18 22:31:55.666556-08
(1 row)

musi= c=3D> analyze verbose rock;
INFO:  analyzin= g "eric.rock"
INFO:  "rock": scanned 1 of=  1 pages, containing 1 live rows and&nb= sp;0 dead rows; 1 rows in sample, 1&nbs= p;estimated total rows
ANALYZE
music=3D> select&nb= sp;relname, last_analyze from pg_stat_user_tables wher= e relname =3D 'rock';
 relname |  &n= bsp;      last_analyze   &nbs= p;      
---------+----------------------= ---------
 rock    | 2016-02-18 22:3= 4:16.526558-08
(1 row)

=0A


=0A
gaoqiangdba@163.com
=0A 
From: nunks
Date: 2016-02-19=  10:02
Subject: [ADMIN] ANALYZE'i= ng table hierarchies

Hello,

=0A

=  

=0A

I=0Ahave a question =0Aabout= running ANALYZE on=0Atable h= ierarchies.

=0A

 

=0A

The=0Adocumentation page for=0Apartitioning mentions =0Athe need to manually=0Aissue VACUUM <= span>and =0AANALYZEs for each parti= tion (http://www.postg= resql.org/docs/9.4/static/ddl-partitioning.html#DDL-PARTITIONING-CAVEATS),=0Awhile the =0Apage for ANALYZ= E (http://www.postgresql.org/docs/9.4/static/sql= -analyze.html)=0Amentions it does gather =0Astatistics for the master=0At= able and its =0Achildren.=0A

 

=0A

= When I ANALYZE=0A a master table =0APostgreSQL says it is=0Aworking on = =0Athe entire hierarchy=0Aand automatically =0AANALYZEs the child=0Atables. However, =0Athe<= /span> last_analyze column=0Astays = empty for =0Athe child tables= =0Aon pg_stat_user_tables.=

=0A

 =

=0A

I=0Afind this =0Asomewhat confusing= , what is=0Athe expected =0Abehavior? I figure the child=0Atables have =0Abeen properly ANALYZEd,=0Abut I can't =0Afind it registered anywhere= . It=0Awould be =0Anice to be =0Aable to parse pg_stat_user_tabl= es for =0Aanalyze statistics withou= t=0Ahaving to worry =0Aabout= hierarchies, since=0Aeach pa= rtition =0Aseems to have its own=0Astatistics for everything=0Aelse.

=0A

 

=0A

     =0Anunks=3D# analyze =0Averbose tb05;=0A

 &nb= sp;   =0AINFO:  analyzing "public.tb05"

=0A

     =0AINFO:  "tb05":=0Ascanned 0= of 0 =0Apages, containing 0 = live=0Arows and 0 =0Adead rows; 0 rows in=0Asample, 0 est= imated total=0Arows

=0A

    &nbs= p;=0AINFO:  analyzing "= public.tb05"=0Ainheritance tree=0A

 &nbs= p;   =0AINFO:  "tb05_= 2016":=0Ascanned 165 of 165 =0Apages, containing 7465 live=0Arows and 455 =0Adead rows; 7465 rows in=0Asample, 7465 estimated total=0A= rows

=0A

     =0AINFO:  "tb05_2015":=0Ascanned 381 of 381 =0Apages, containing 16281 live=0Arows and 1504 =0Adead = rows; 16281 rows in=0Asample, 16281 estimated total=0Arows

=0A

   &nbs= p; =0AANALYZE

=0A

     =0A

=0A

=      =0Anunks=3D# select =0Arelname, last_analyze fr= om=0Apg_stat_user_tables where=0Are= lname like 'tb05%';

=0A

    &nbs= p;=0A  relname&nb= sp;=0A|         last_analyze

=0A

     =0A= -----------+-------------------------------

=0A

   &nbs= p; =0A tb05  &n= bsp;  =0A| 2016-02-18 22:47:32.770076-02=0A

 &nbs= p;   =0A tb05_2016 |<= /span>

=0A

=      =0A tb0= 5_2015 |

=0A

     =0A(3 rows)

=0A

 

=0A

<= font face=3D"Courier New" size=3D"2">     =0Anunks=3D# \d+ tb05;

=0A

     &nb= sp;            = ;            &= nbsp;           &nb= sp;            = ;   =0ATable "public.tb05"

=0A

 =           =0A   Column    &nb= sp;  =0A|       =      Type   &= nbsp;        =0A| Mod= ifiers | Storage =0A| <= span>Stats target |=0ADescription<= /font>

=0A

= &= nbsp;    =0A---------------------+-------------= ----------------+-----------+----------+--------------+-------------

=0A

     =0A  a           &= nbsp;     =0A| character varying(8)       =0A| not null =0A| exten= ded |         &n= bsp;   =0A|

=0A

     =0A<= /span>  b       = ;          =0A| d= ate           = ;             = | =0Anot null =0A= | plain   =0A| =            =   |

=0A

     =0A&= nbsp; c         =         =0A| timestam= p without time=0Azone | not = =0Anull  | =0Aplain    |     &nb= sp;       =0A|

= =0A

  = ;   =0A  d   =             &n= bsp; =0A| timestamp without time=0A<= span>zone | not =0Anull = | =0Aplain    |            = ; =0A|

=0A

     =0A&= nbsp; e       = ;          =0A| <= span>bigint        &n= bsp;           &nbs= p;=0A| not null =0A| plain    =0A|  &nbs= p;           |

=0A

=      =0A  f&= nbsp;           &nb= sp;    =0A| bigint &nbs= p;            =        =0A| not null =0A| plain   =0A|      &n= bsp;       |

=0A

   =   =0A  g    &= nbsp;           &nb= sp;=0A| bigint     &nbs= p;            =    =0A| not null =0A| plain   =0A|          &n= bsp;   |

=0A

     =0A  h        &= nbsp;        =0A| big= int         &nbs= p; =0A        &n= bsp; | not=0Anull = =0A| plain   =0A|           &nbs= p;  |

=0A

     =0A&nbs= p; i         &nb= sp;       =0A| bigint           =           =0A| not null =0A| plain   =0A|   &n= bsp;          |=

=0A

=      =0A  j &= nbsp;           &nb= sp;   =0A| bigint  &nbs= p;            =       =0A| not nul= l =0A| plain = ;  =0A|       &n= bsp;      |

=0A

   &nbs= p; =0A  k     = ;            = =0A| bigint      &= nbsp;           &nb= sp;  =0A| not null&= nbsp;=0A| plain   =0A|           = ;   |

=0A

     =0A  l        &nbs= p;        =0A| bigint=           &= nbsp;          =0A| not null =0A| = plain   =0A|  &nb= sp;           |

=0A

=      =0A  m&= nbsp;           &nb= sp;    =0A| bigint &nbs= p;            =        =0A| not null =0A| plain   =0A|      &n= bsp;       |

=0A

   =   =0A  n &= nbsp;           &nb= sp;   =0A| bigint  &nbs= p;            =       =0A| not nul= l =0A| plain = ;  =0A|       &n= bsp;      |

=0A

   &nbs= p; =0A  o  &nbs= p;            =   =0A| bigint    &= nbsp;           &nb= sp;    =0A| not null<= span> =0A| plain    = =0A|          &nbs= p;   |

=0A

     =0A  p        &nb= sp;        =0A| bigin= t          =            =0A| not null =0A|= plain  =0A |&= nbsp;           &nb= sp;=0A|

=0A

     =0A  = q          =        =0A| bigint<= span>           &nb= sp;         =0A| not null =0A| pl= ain   =0A|    = ;          |

=0A

&nb= sp;    =0A  r &nbs= p;            =    =0A| bigint   &= nbsp;           &nb= sp;     =0A| not null =0A| plain &n= bsp; =0A|        = ;      |

=0A

    &nb= sp;=0AIndexes:

=0A

       &nbs= p;   =0A"tb05_pkey" PRIMARY KEY, = =0Abtree (a, b)

=0A

     =0ATriggers:

=0A

        &n= bsp;  =0Atr_partition_tb05 BEFORE INSERT ON = tb05 FOR EACH ROW EXECUTE PROCEDURE fn_partition_tb05()

= =0A

  = ;   =0AChild tables: tb05_= 2015,

=0A

          &n= bsp;           &nbs= p;=0A  tb05_2016

= =0A

 

=0A

Than= ks!=0A

 

=0ANunks
=0A
=0A ------=_001_NextPart611155358357_=------