p90 x your database!!
TRANSCRIPT
![Page 1: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/1.jpg)
1
Friday, March 25, 2011
![Page 2: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/2.jpg)
Your Database!!Denish Patel
Database ArchitectOmniTi Computer Consulting Inc.
1
Friday, March 25, 2011
![Page 3: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/3.jpg)
2
Friday, March 25, 2011
![Page 4: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/4.jpg)
Who am I ?• Denish Patel
• Database Architect
• 4+ Years with OmniTi
• Expertise
• Heterogeneous Databases
• PostgreSQL, Oracle, MySQL
• Very Large databases
• Performance tuning
• Application level
• SQL tuning
• Database and OS parameters
• Objects tuning2
Friday, March 25, 2011
![Page 5: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/5.jpg)
Who am I ?• Denish Patel
• Database Architect
• 4+ Years with OmniTi
• Expertise
• Heterogeneous Databases
• PostgreSQL, Oracle, MySQL
• Very Large databases
• Performance tuning
• Application level
• SQL tuning
• Database and OS parameters
• Objects tuning2
OmniTi is hiring!
Friday, March 25, 2011
![Page 6: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/6.jpg)
3
Friday, March 25, 2011
![Page 7: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/7.jpg)
Agenda•Why bloat ?
•Issues
•Identify bloat
•Tables
•Indexes
•Bloat removal toolkit
•Monitoring and trending
3
Friday, March 25, 2011
![Page 8: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/8.jpg)
4
Friday, March 25, 2011
![Page 9: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/9.jpg)
why bloat?
•MVCC
•ACID
•Updates & Deletes
4
Friday, March 25, 2011
![Page 10: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/10.jpg)
5
Friday, March 25, 2011
![Page 11: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/11.jpg)
MVCC method-1
5
Friday, March 25, 2011
![Page 12: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/12.jpg)
MVCC method-1
5
Friday, March 25, 2011
![Page 13: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/13.jpg)
MVCC method-1!
!"#$%&'
()*+&$
'
,+-.$'
/+&+' (0/1,2'
34..-+56''
7$89$"&'
,31:7'
;<='
'!:723,'
/2;2,2'
72;2>,''
><??!,'
5
Friday, March 25, 2011
![Page 14: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/14.jpg)
6
Friday, March 25, 2011
![Page 15: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/15.jpg)
MVCC method-2
6
Friday, March 25, 2011
![Page 16: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/16.jpg)
MVCC method-2
6
Friday, March 25, 2011
![Page 17: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/17.jpg)
!
!"#$%&
'"("&
)*'+!,&
!-+./&
012&
&3./,-!&
',0,!,&
/,0,4!&&
41553!&
MVCC method-2
6
Friday, March 25, 2011
![Page 18: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/18.jpg)
7
Friday, March 25, 2011
![Page 19: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/19.jpg)
Issues•Unnecessary costly I/O operations
•Poor database tables access time
•Increase maintenance time
•Waste of resources
•RAM
•CPU
•Disk
7
Friday, March 25, 2011
![Page 20: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/20.jpg)
8
Friday, March 25, 2011
![Page 21: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/21.jpg)
Prevent Bloat• autovacuum =on
• vacuum manually between batch updates
• Truncate table
• Free Space Map
• <= PostgreSQL 8.3
• max_fsm_pages
• max_fsm_tables
• >=PostgreSQL 8.4
• auto sizing free space map
8
Friday, March 25, 2011
![Page 22: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/22.jpg)
9
Friday, March 25, 2011
![Page 23: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/23.jpg)
BEWARE!•Bug: long running auto-vacuum workers
•PostgreSQL Version Affected
•8.3.10
•8.3.11
•8.3.12
•8.4.4
•8.4.5
9
Friday, March 25, 2011
![Page 24: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/24.jpg)
BEWARE!•Bug: long running auto-vacuum workers
•PostgreSQL Version Affected
•8.3.10
•8.3.11
•8.3.12
•8.4.4
•8.4.5
9
Upgrade to latest release !!
Friday, March 25, 2011
![Page 25: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/25.jpg)
10
Friday, March 25, 2011
![Page 26: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/26.jpg)
Measure Bloat
•Bloat Report
•pg_bloat_report (OmniTI Labs)
•Nagios Monitoring
•Check_postgres_bloat
10
Friday, March 25, 2011
![Page 27: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/27.jpg)
11
Friday, March 25, 2011
![Page 28: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/28.jpg)
pg_bloat_reportBloat Report Tables
1. omniti.hits 1969348 of 4255960 pages wasted (46.3%), 15 GB of 32 GB.
2. omniti.clients 279979 of 370509 pages wasted (75.6%), 2187 MB of 2895 MB.
Bloat Report Indexes
1. omniti.hits_pk 51275 of 71075 pages wasted (72.1%), 401 MB of 555 MB.
2. omniti.clients_tz 47550 of 71271 pages wasted (66.7%), 371 MB of 557 MB.11
Friday, March 25, 2011
![Page 29: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/29.jpg)
12
Friday, March 25, 2011
![Page 30: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/30.jpg)
check_postgres_bloat
Notification Type: PROBLEMHost: omniti
State: CRITICALDate/Time: Wed Feb 16 11:24:56 UTC 2011
Additional Info: POSTGRES_BLOAT CRITICAL: DB "omniti" (host:omniti)
(port=5432) table omniti.hits rows:23995164 pages:2858893 shouldbe:2278176 (1.3X)
wasted size:4757233664 (4 GB)
12
Friday, March 25, 2011
![Page 31: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/31.jpg)
13
Friday, March 25, 2011
![Page 32: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/32.jpg)
bloat removal toolkit
• Offline - with locking
• Vacuum
• Vacuum Full
• Cluster
• Cluster vs Vacuum Full
• Online - with minimal locking
• compact_table
• pg_reorg
13
Friday, March 25, 2011
![Page 33: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/33.jpg)
14
Friday, March 25, 2011
![Page 34: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/34.jpg)
14
Friday, March 25, 2011
![Page 35: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/35.jpg)
15
Friday, March 25, 2011
![Page 36: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/36.jpg)
vacuum•Auto vacuum
•VACUUM [verbose|analyze] table
•Reclaims storage occupied by dead tuples
•Reclaimed space available to re-use
•Normally free space doesn’t return to OS
•No exclusive table lock
15
Friday, March 25, 2011
![Page 37: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/37.jpg)
16
Friday, March 25, 2011
![Page 38: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/38.jpg)
vacuum full• VACUUM FULL table
• Compact table based on dead rows
• Starting PostgreSQL 9.0 , it’s rewrite entire table and indexes (like CLUSTER)
• Reclaimed space available to re-use
• Space returned to OS
• Table Exclusive lock
• Expensive operation
16
Friday, March 25, 2011
![Page 39: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/39.jpg)
17
Friday, March 25, 2011
![Page 40: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/40.jpg)
17
Friday, March 25, 2011
![Page 41: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/41.jpg)
18
Friday, March 25, 2011
![Page 42: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/42.jpg)
cluster•CLUSTER [verbose] table_name
[USING index_name]
•Create reorganized copy of table based on index
•Rebuild indexes too
•Requires Exclusive Lock on table
•Expensive Operation
18
Friday, March 25, 2011
![Page 43: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/43.jpg)
19
Friday, March 25, 2011
![Page 44: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/44.jpg)
cluster vs vacuum full
Order based on IndexIt’s just rewrite of table without
any specific order
Table needs index Doesn’t need index
Doesn’t bloat indexBloat indexes (Pre PostgreSQL
9.0)
Overall operation Faster Overall Operation Slower (Pre
PostgreSQL 9.0)
Recommended Not recommended
19
Friday, March 25, 2011
![Page 45: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/45.jpg)
20
Friday, March 25, 2011
![Page 46: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/46.jpg)
20
Friday, March 25, 2011
![Page 47: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/47.jpg)
21
Friday, March 25, 2011
![Page 48: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/48.jpg)
compact_table
•Developed by OmniTi
•Reorganize rows to empty pages at the end based on ctid
•ctid - (page number, tuple number)
•When we update a row, the row's ctid changes, because the update creates a new version of the row and leaves the old version behind
21
Friday, March 25, 2011
![Page 49: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/49.jpg)
22
Friday, March 25, 2011
![Page 50: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/50.jpg)
compact_tablepostgres=# select ctid,* from bar;
ctid | a | b -------+---+--- (0,1) | 1 | 1 (0,2) | 2 | 1
(2 rows)
postgres=# update bar set a=3 where a=2;UPDATE 1
postgres=# select ctid,* from bar; ctid | a | b
-------+---+--- (0,1) | 1 | 1 (0,3) | 3 | 1
(2 rows)
postgres=# vacuum verbose bar;..
INFO: "bar": found 1 removable, 2 nonremovable row versions in 1 out of 1 pagesDETAIL: 0 dead row versions cannot be removed yet.
VACUUM22
Friday, March 25, 2011
![Page 51: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/51.jpg)
23
Friday, March 25, 2011
![Page 52: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/52.jpg)
compact_table
23
Friday, March 25, 2011
![Page 53: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/53.jpg)
compact_tablepostgres=# truncate table bar;
TRUNCATE TABLEpostgres=# insert into bar select generate_series(1,1000);
INSERT 0 1000postgres=# delete from bar where a %2 = 0;
DELETE 500postgres=# select max(ctid) from bar;
max -------- (4,95)(1 row)
postgres=# vacuum verbose bar;INFO: "bar": found 0 removable, 500
nonremovable row versions in 5 out of 5 pagesVACUUM23
Friday, March 25, 2011
![Page 54: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/54.jpg)
24
Friday, March 25, 2011
![Page 55: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/55.jpg)
compact_tablepostgres=# begin;
BEGINpostgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 161postgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 161postgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 48postgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 48postgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 34postgres=# update bar set a=a where ctid>='(3,0)';
UPDATE 0postgres=# commit;
COMMITpostgres=# vacuum verbose bar;
.
.INFO: "bar": truncated 5 to 3 pages
.VACUUM24
Friday, March 25, 2011
![Page 56: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/56.jpg)
25
Friday, March 25, 2011
![Page 57: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/57.jpg)
compact_table
•Pretty safe update process
•No additional changes required
•Slow process
•Generate Index bloat
•Under development
•Not tested in production
•Future consideration?25
Friday, March 25, 2011
![Page 58: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/58.jpg)
26
Friday, March 25, 2011
![Page 59: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/59.jpg)
26
Friday, March 25, 2011
![Page 60: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/60.jpg)
27
Friday, March 25, 2011
![Page 61: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/61.jpg)
pg_reorg• Developed by NTT OSS Center
• Reorganize table with very short lock
• Needs Primary Key
• Not Null Unique Key works!
• CLUSTER online
• ORDER BY Key
• VACUUM FULL Online
• Rewrite without ORDER BY
• Build and Install like other Contrib Module
27
Friday, March 25, 2011
![Page 62: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/62.jpg)
28
!
!"#$%&'(
)"'($"($*+,($-./*0(
( 1&2*#$(
( 3,4-$*(
( 5*/*$*(
6*,/-7(
8,$%"&-/(
9"#:(
;-./*(
;*+,(
)"'((
;-./*(
;-#'*$(
;-./*(
3,4-$*(
9"#:(($-./*(
<%$=(
8,*#-$%"&-/(
)"'(
!<-,,%&'(
<%$=(>*#7(
2="#$()"?:(
(
Friday, March 25, 2011
![Page 63: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/63.jpg)
pg_reorg
28
!
!"#$%&'(
)"'($"($*+,($-./*0(
( 1&2*#$(
( 3,4-$*(
( 5*/*$*(
6*,/-7(
8,$%"&-/(
9"#:(
;-./*(
;*+,(
)"'((
;-./*(
;-#'*$(
;-./*(
3,4-$*(
9"#:(($-./*(
<%$=(
8,*#-$%"&-/(
)"'(
!<-,,%&'(
<%$=(>*#7(
2="#$()"?:(
(
Friday, March 25, 2011
![Page 64: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/64.jpg)
29
Friday, March 25, 2011
![Page 65: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/65.jpg)
pg_reorg Optionspg_reorg --no-order -table test -d omniti
-n -- no-orderDo online VACUUM FULL.
-o columns [,...]--order-by=columns [,...]Do online CLUSTER ordered by specified columns.
-t table--table=table
-Z--no-analyze
-T seconds--wait-timeout=seconds
29
Friday, March 25, 2011
![Page 66: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/66.jpg)
30
Friday, March 25, 2011
![Page 67: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/67.jpg)
pg_reorg in action$ /opt/pgsql/bin/pg_reorg -e -t public.test --order-by=test_id -U postgres -d test
LOG: (query) SET statement_timeout = 0LOG: (query) SET search_path = pg_catalog, pg_temp, publicLOG: (query) SET client_min_messages = warningLOG: (query) SELECT * FROM reorg.tables WHERE relid = $1::regclassLOG: (param:0) = public.testLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.conflicted_triggers($1)LOG: (param:0) = 7441636LOG: (query) CREATE TYPE reorg.pk_7441636 AS (test_id integer)LOG: (query) CREATE TABLE reorg.log_7441636 (id bigserial PRIMARY KEY, pk reorg.pk_7441636, row pulbic.test)LOG: (query) CREATE TRIGGER z_reorg_trigger BEFORE INSERT OR DELETE OR UPDATE ON pulbic.test FOR EACH ROW EXECUTE PROCEDURE reorg.reorg_trigger('INSERT INTO reorg.log_7441636(pk, row) VALUES( CASE WHEN $1 IS NULL THEN NULL ELSE (ROW($1.test_id)::reorg.pk_7441636) END, $2)')LOG: (query) SELECT reorg.disable_autovacuum('reorg.log_7441636')LOG: (query) COMMIT
30
Friday, March 25, 2011
![Page 68: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/68.jpg)
pg_reorg in action$ /opt/pgsql/bin/pg_reorg -e -t public.test --order-by=test_id -U postgres -d test
LOG: (query) SET statement_timeout = 0LOG: (query) SET search_path = pg_catalog, pg_temp, publicLOG: (query) SET client_min_messages = warningLOG: (query) SELECT * FROM reorg.tables WHERE relid = $1::regclassLOG: (param:0) = public.testLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.conflicted_triggers($1)LOG: (param:0) = 7441636LOG: (query) CREATE TYPE reorg.pk_7441636 AS (test_id integer)LOG: (query) CREATE TABLE reorg.log_7441636 (id bigserial PRIMARY KEY, pk reorg.pk_7441636, row pulbic.test)LOG: (query) CREATE TRIGGER z_reorg_trigger BEFORE INSERT OR DELETE OR UPDATE ON pulbic.test FOR EACH ROW EXECUTE PROCEDURE reorg.reorg_trigger('INSERT INTO reorg.log_7441636(pk, row) VALUES( CASE WHEN $1 IS NULL THEN NULL ELSE (ROW($1.test_id)::reorg.pk_7441636) END, $2)')LOG: (query) SELECT reorg.disable_autovacuum('reorg.log_7441636')LOG: (query) COMMIT
SET variables
30
Friday, March 25, 2011
![Page 69: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/69.jpg)
pg_reorg in action$ /opt/pgsql/bin/pg_reorg -e -t public.test --order-by=test_id -U postgres -d test
LOG: (query) SET statement_timeout = 0LOG: (query) SET search_path = pg_catalog, pg_temp, publicLOG: (query) SET client_min_messages = warningLOG: (query) SELECT * FROM reorg.tables WHERE relid = $1::regclassLOG: (param:0) = public.testLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.conflicted_triggers($1)LOG: (param:0) = 7441636LOG: (query) CREATE TYPE reorg.pk_7441636 AS (test_id integer)LOG: (query) CREATE TABLE reorg.log_7441636 (id bigserial PRIMARY KEY, pk reorg.pk_7441636, row pulbic.test)LOG: (query) CREATE TRIGGER z_reorg_trigger BEFORE INSERT OR DELETE OR UPDATE ON pulbic.test FOR EACH ROW EXECUTE PROCEDURE reorg.reorg_trigger('INSERT INTO reorg.log_7441636(pk, row) VALUES( CASE WHEN $1 IS NULL THEN NULL ELSE (ROW($1.test_id)::reorg.pk_7441636) END, $2)')LOG: (query) SELECT reorg.disable_autovacuum('reorg.log_7441636')LOG: (query) COMMIT
SET variables
Place Triggers
30
Friday, March 25, 2011
![Page 70: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/70.jpg)
31
Friday, March 25, 2011
![Page 71: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/71.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL SERIALIZABLE
LOG: (query) SELECT set_config('work_mem', current_setting('maintenance_work_mem'), true)LOG: (query) SELECT reorg.array_accum(virtualtransaction) FROM pg_locks WHERE locktype = 'virtualxid' AND pid <> pg_backend_pid()LOG: (query) DELETE FROM reorg.log_7441636LOG: (query) CREATE TABLE reorg.table_7441636 WITH (oids=false) TABLESPACE pg_default AS SELECT * FROM ONLY public.test ORDER BY test_idLOG: (query) SELECT reorg.disable_autovacuum('reorg.table_7441636')LOG: (query) COMMITLOG: (query) SELECT indexrelid, reorg.reorg_indexdef(indexrelid, indrelid) FROM pg_index WHERE indrelid = $1LOG: (param:0) = 7441636LOG: (query) CREATE UNIQUE INDEX index_201337719 ON reorg.table_7441636 USING btree (test_id)
LOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 1000 31
Friday, March 25, 2011
![Page 72: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/72.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL SERIALIZABLE
LOG: (query) SELECT set_config('work_mem', current_setting('maintenance_work_mem'), true)LOG: (query) SELECT reorg.array_accum(virtualtransaction) FROM pg_locks WHERE locktype = 'virtualxid' AND pid <> pg_backend_pid()LOG: (query) DELETE FROM reorg.log_7441636LOG: (query) CREATE TABLE reorg.table_7441636 WITH (oids=false) TABLESPACE pg_default AS SELECT * FROM ONLY public.test ORDER BY test_idLOG: (query) SELECT reorg.disable_autovacuum('reorg.table_7441636')LOG: (query) COMMITLOG: (query) SELECT indexrelid, reorg.reorg_indexdef(indexrelid, indrelid) FROM pg_index WHERE indrelid = $1LOG: (param:0) = 7441636LOG: (query) CREATE UNIQUE INDEX index_201337719 ON reorg.table_7441636 USING btree (test_id)
LOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 1000
CTASCreate Indexes
31
Friday, March 25, 2011
![Page 73: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/73.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL SERIALIZABLE
LOG: (query) SELECT set_config('work_mem', current_setting('maintenance_work_mem'), true)LOG: (query) SELECT reorg.array_accum(virtualtransaction) FROM pg_locks WHERE locktype = 'virtualxid' AND pid <> pg_backend_pid()LOG: (query) DELETE FROM reorg.log_7441636LOG: (query) CREATE TABLE reorg.table_7441636 WITH (oids=false) TABLESPACE pg_default AS SELECT * FROM ONLY public.test ORDER BY test_idLOG: (query) SELECT reorg.disable_autovacuum('reorg.table_7441636')LOG: (query) COMMITLOG: (query) SELECT indexrelid, reorg.reorg_indexdef(indexrelid, indrelid) FROM pg_index WHERE indrelid = $1LOG: (param:0) = 7441636LOG: (query) CREATE UNIQUE INDEX index_201337719 ON reorg.table_7441636 USING btree (test_id)
LOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 1000
CTASCreate Indexes
Apply Operational
logs
31
Friday, March 25, 2011
![Page 74: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/74.jpg)
32
Friday, March 25, 2011
![Page 75: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/75.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE public.test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 0
LOG: (query) SELECT reorg.reorg_swap($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SELECT reorg.reorg_drop($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTEDLOG: (query) ANALYZE publoc.testLOG: (query) COMMIT
32
Friday, March 25, 2011
![Page 76: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/76.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE public.test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 0
LOG: (query) SELECT reorg.reorg_swap($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SELECT reorg.reorg_drop($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTEDLOG: (query) ANALYZE publoc.testLOG: (query) COMMIT
Lock table and
apply operational logs
last time
32
Friday, March 25, 2011
![Page 77: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/77.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE public.test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 0
LOG: (query) SELECT reorg.reorg_swap($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SELECT reorg.reorg_drop($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTEDLOG: (query) ANALYZE publoc.testLOG: (query) COMMIT
Lock table and
apply operational logs
last time
Swapping
32
Friday, March 25, 2011
![Page 78: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/78.jpg)
pg_reorg in actionLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SET LOCAL statement_timeout = 100LOG: (query) LOCK TABLE public.test IN ACCESS EXCLUSIVE MODELOG: (query) RESET statement_timeoutLOG: (query) SELECT reorg.reorg_apply($1, $2, $3, $4, $5, $6)LOG: (param:0) = SELECT * FROM reorg.log_7441636 ORDER BY id LIMIT $1LOG: (param:1) = INSERT INTO reorg.table_7441636 VALUES ($1.*)LOG: (param:2) = DELETE FROM reorg.table_7441636 WHERE (test_id) = ($1.test_id)LOG: (param:3) = UPDATE reorg.table_7441636 SET (test_id, name, lat, lon, city, country, state_abr) = ($2.test_id, $2.name, $2.lat, $2.lon, $2.city, $2.country, $2.state_abr) WHERE (test_id) = ($1.test_id)LOG: (param:4) = DELETE FROM reorg.log_7441636 WHERE id <= $1LOG: (param:5) = 0
LOG: (query) SELECT reorg.reorg_swap($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTED
LOG: (query) SELECT reorg.reorg_drop($1)LOG: (param:0) = 7441636LOG: (query) COMMITLOG: (query) BEGIN ISOLATION LEVEL READ COMMITTEDLOG: (query) ANALYZE publoc.testLOG: (query) COMMIT
Lock table and
apply operational logs
last time
Swapping
Drop work and temp tables
Analyze new table
32
Friday, March 25, 2011
![Page 79: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/79.jpg)
33
Friday, March 25, 2011
![Page 80: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/80.jpg)
pg_reorg in Production
•Database Size 540GB
•OLTP database 2-3K transactions/sec
•Largest pre-rebuild table Size was 127GB
•Took 5.75 hours to rebuild
•Reclaimed 52GB
•No outage reported for website!
33
Friday, March 25, 2011
![Page 81: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/81.jpg)
34
Friday, March 25, 2011
![Page 82: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/82.jpg)
pg_reorg in Production
34
Table Size Before Reorg
Pg_Reorg Execution time
Bloat Removed
35GB 24m 10sec 13GB
27GB 116m 8 Sec 6GB
31GB 64m 32sec 4GB
44GB 128m 44sec 3GB
Friday, March 25, 2011
![Page 83: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/83.jpg)
35
Friday, March 25, 2011
![Page 84: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/84.jpg)
35
Friday, March 25, 2011
![Page 85: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/85.jpg)
36
Friday, March 25, 2011
![Page 86: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/86.jpg)
36
Friday, March 25, 2011
![Page 87: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/87.jpg)
37
Friday, March 25, 2011
![Page 88: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/88.jpg)
Test Case
• Database : PostgreSQL 9.0.2
• OS: Solaris 11
• RAM : 32GB
• work_mem=16MB
• Table Name : Users
• Table Size : 1180 MB
• Indexes Size : 256 MB
• Rows : 6M
postgres=# \d users Table "public.users"
Column | Type | Modifiers --------------+--------------------------+----------- user_id | integer | not null
name | text | creation_tsz | timestamp with time zone |
active | boolean | clicks | double precision |
Indexes: "users_pkey" PRIMARY KEY, btree (user_id) "users_creation_tsz" btree (creation_tsz)
- DELETE 3M ROWS- UPDATE 1M ROWS37
Friday, March 25, 2011
![Page 89: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/89.jpg)
38
Friday, March 25, 2011
![Page 90: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/90.jpg)
Comparison
CLUSTER VACUUM FULL PG_REORG
Execution Time: 2 min
Table Size: 594MBIndex Size: 128 MB
Execution Time:1 min 50 Sec
Table Size: 594MBIndex Size: 128 MB
Execution Time: 1 min 4 Sec
Table Size: 594MBIndex Size: 128 MB
offline offline online
Built - in Built-in External Tool
38
Friday, March 25, 2011
![Page 91: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/91.jpg)
39
Friday, March 25, 2011
![Page 92: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/92.jpg)
Other Tips
•Remove unused indexes
•Reindex indexes as needed
•Partitioned table
•Detach child table -> Cluster child table -> Attach
•Avoid vacuum full (Pre PostgrSQL 9.0)
39
Friday, March 25, 2011
![Page 93: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/93.jpg)
40
Friday, March 25, 2011
![Page 94: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/94.jpg)
Monitoring
•Circonus
•Nagios monitoring
•Bloat report
40
Friday, March 25, 2011
![Page 95: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/95.jpg)
41
Friday, March 25, 2011
![Page 96: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/96.jpg)
trending
•Cacti
•Circonus
41
Friday, March 25, 2011
![Page 97: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/97.jpg)
42
Friday, March 25, 2011
![Page 98: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/98.jpg)
trending
42
Friday, March 25, 2011
![Page 99: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/99.jpg)
trending
42
Friday, March 25, 2011
![Page 100: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/100.jpg)
43
Friday, March 25, 2011
![Page 101: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/101.jpg)
thanks!
•OmniTi
•Robert Treat
•Depesz
•Joshua (End Point)
•PGEast Conference Committee
43
Friday, March 25, 2011
![Page 102: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/102.jpg)
44
Friday, March 25, 2011
![Page 103: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/103.jpg)
References•http://www.postgresql.org/docs/9.0/
•http://reorg.projects.postgresql.org/pg_reorg.html
•https://labs.omniti.com/pgtreats/trunk/tools/compact_table
•http://blog.endpoint.com/2010/09/reducing-bloat-without-locking.html
44
Friday, March 25, 2011
![Page 104: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/104.jpg)
45
Friday, March 25, 2011
![Page 105: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/105.jpg)
open discussion
•When PostgreSQL will have built in features to rebuild table and index online ?
•Is it worth to change MVCC handling to avoid bloating?
45
Friday, March 25, 2011
![Page 106: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/106.jpg)
46
Friday, March 25, 2011
![Page 107: P90 X Your Database!!](https://reader030.vdocument.in/reader030/viewer/2022020110/5558ea5ed8b42ab8168b50ab/html5/thumbnails/107.jpg)
46
Questions?
•Email : [email protected]
•Twitter : http://twitter.com/#!/denishpatel
Friday, March 25, 2011