Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

9.1 Grand Tour

3,461 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

9.1 Grand Tour

  1. 1. 9.1 Tour Grand Josh Berkus Postgres Open September 2011
  2. 2. Home Replication Tools Synchronous Replication Per-Column CollationsOtherFeatures SE-Postgres wCTEsExtensions SSI K-Nearest Neighbor SQL/MED Unlogged Tables
  3. 3. Asynchronous Replication
  4. 4. Asynchronous Replication
  5. 5. Synchronous Replication
  6. 6. Synchronous Replication
  7. 7. Synchronous Replicationstandby Paris:primary_conninfo = host=john port=5432 user=replication application_name=parismaster London:synchronous_commit = onsynchronous_standby_names = paris,madrid,berlin
  8. 8. Synchronous Replicationpostgres=# select application_name as appname, state,sync_state, sync_priority as prty, replay_locationfrom pg_stat_replication; appname | state | sync_state | prty | replay_loc---------+-----------+------------+------+------------ paris | STREAMING | SYNC | 1 | 0/29154EB8 madrid | STREAMING | POTENTIAL | 2 | 0/291452F0 berlin | STREAMING | POTENTIAL | 3 | 0/29154EB8
  9. 9. Transaction Control# set synchronous_commit = on;# begin;# update user_balance# set balance = balance - 300# where user = 14301;# update user_balance# set balance = balance + 300# where user = 13221;# commit;
  10. 10. Transaction Control# set synchronous_commit = local;# insert into user_messages# values ( 14301, 13221,# hello a/s/l? ); Po stg re sO nly !
  11. 11. New Replication Tools● pg_stat_replication view ● shows all replicas and their statuses● pg_basebackup ● single-command cloning over port 5432● re-mastering ● promote a replica to be the new master● new functions ● pg_last_xact_replay_timestamp() ● pg_xlog_replay_pause()
  12. 12. Per-Column CollationsID english 日本語787 error エラー12 unique ユニークな456 index インデックス333 documentation ドキュメンテーション217 open source オープンソース2134 penguin ペンギン
  13. 13. Per-Column Collations$ create table collated_polish (some_texttext collate "pl_PL.utf8");$ copy collated_polish from /tmp/polish;$ select * from collated_polish order bysome_text;some_text-----------alfacarcomalamaódkamama
  14. 14. Land ofSurrealQueries
  15. 15. Writable CTEsWITH deleted_posts AS ( DELETE FROM posts WHERE created < now() - 6 months::INTERVAL RETURNING *)SELECT user_id, count(*) FROMdeleted_posts group BY 1;
  16. 16. Po stg Writable CTEs re sO nlyWITH deleted_posts AS ( ! DELETE FROM posts WHERE created < now() - 6 months::INTERVAL RETURNING *),deleted_per_user as ( SELECT user_id, count(*) FROM deleted_posts GROUP BY 1)UPDATE countsSET posts_count = posts_count - d.countFROM deleted_per_user dWHERE d.user_id = counts.user_id;
  17. 17. Serialized Snapshot Isolation ● Allows true serialization of concurrent transactions ● No more explicit locking! ● No more deadlocks! ● As long as each transaction works, all will work.Po Including limited predicate locking. ● stg res On ly!
  18. 18. See SSI Th eTupdate othello alkset pieces = !white where update othello setpieces = black; pieces = black where pieces = white; commit;commit;ERROR: could notserialize access due toread/writedependenciesamongtransactions
  19. 19. Unlogged TablesCREATE UNLOGGED TABLEcleaned_log_importAS SELECT hit_time, pageFROM raw_hits, hit_watermarkWHERE hit_time > last_watermark AND is_valid(page);
  20. 20. Po stg SE-Postgres re sO nly !● Now a contrib module! ● uses “hooks” enabled at build time● Integrates with SE-Linux ● SE-Linux “security labels” become object permissions ● covers all database object permissions● row-level access control not implemented yet
  21. 21. SE-Postgres
  22. 22. SE-Postgres
  23. 23. K-Nearest Neighbor
  24. 24. Po K-Nearest Neighbor s 1 stg re st!SELECT *, position <-> $my_current_location as distanceFROM gelateriasORDER BY position <-> $my_current_locationLIMIT 3;
  25. 25. SQL-MEDFDR FDRFDR
  26. 26. SQL-MEDCREATE FOREIGN TABLE raw_hits( hit_time TIMESTAMP, page TEXT )SERVER file_fdwOPTIONS (format csv, delimiter;, filename /var/log/hits.log);
  27. 27. See SQL-MED the talk !SELECT page, count(*)FROM raw_hitsWHERE hit_time > 2011-04-16 16:00:00 AND hit_time <= 2011-04-16 17:00:00GROUP BY page;
  28. 28. Extensions
  29. 29. Po stg Extensions re sO nlyCREATE EXTENSION IF NOT EXISTS citext !WITH SCHEMA ext;dxSchema | Name | Version | Description-------+--------+----------+------------ext | citext | 9.1devel | case- insensitive character string type
  30. 30. ExtensionsALTER EXTENSION citext UPDATE TO 9.2;DROP EXTENSION citext;
  31. 31. Extensions
  32. 32. Other Features● PL/Python overhaul● Valid-on-creation Foreign Keys● Extensible ENUMs● Triggers on Views● New Trigram implementation● Reduced NUMERIC size● ALTER TYPE without rewrite● pg_dump directory format
  33. 33. 9.1 Sessions at pgOpen● Unlogged Tables: Friday 9:45● Accelerating Local Search with PostgreSQL 9.1: Friday 9:45● PostgreSQL at the Center of Your Dataverse: Friday 10:10● True Serializable Transactions Are Here: Friday 11:00
  34. 34. Contact● Josh Berkus: josh@pgexperts.com ● blog: blogs.ittoolbox.com/database/soup● PostgreSQL: www.postgresql.org ● pgexperts: www.pgexperts.com● Upcoming Events ● PostgreSQL Europe ● Denver pgDay This talk is copyright 2011 Josh Berkus and is licensed under the creative commons attribution license. Special thanks for materials to: Hubert Lubaczewski (wCTE, collation examples), Andrew Dunstan (file_FDW)

×