9.1 Grand Tour

3,446 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,446
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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)

×