Your SlideShare is downloading. ×
0
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
9.1 Grand Tour
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

9.1 Grand Tour

2,969

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
2,969
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 9.1 Tour Grand Josh Berkus Postgres Open September 2011
  • 2. Home Replication Tools Synchronous Replication Per-Column CollationsOtherFeatures SE-Postgres wCTEsExtensions SSI K-Nearest Neighbor SQL/MED Unlogged Tables
  • 3. Asynchronous Replication
  • 4. Asynchronous Replication
  • 5. Synchronous Replication
  • 6. Synchronous Replication
  • 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. 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. 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. Transaction Control# set synchronous_commit = local;# insert into user_messages# values ( 14301, 13221,# hello a/s/l? ); Po stg re sO nly !
  • 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. Per-Column CollationsID english 日本語787 error エラー12 unique ユニークな456 index インデックス333 documentation ドキュメンテーション217 open source オープンソース2134 penguin ペンギン
  • 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. Land ofSurrealQueries
  • 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. 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. 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. 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. Unlogged TablesCREATE UNLOGGED TABLEcleaned_log_importAS SELECT hit_time, pageFROM raw_hits, hit_watermarkWHERE hit_time > last_watermark AND is_valid(page);
  • 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. SE-Postgres
  • 22. SE-Postgres
  • 23. K-Nearest Neighbor
  • 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. SQL-MEDFDR FDRFDR
  • 26. SQL-MEDCREATE FOREIGN TABLE raw_hits( hit_time TIMESTAMP, page TEXT )SERVER file_fdwOPTIONS (format csv, delimiter;, filename /var/log/hits.log);
  • 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. Extensions
  • 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. ExtensionsALTER EXTENSION citext UPDATE TO 9.2;DROP EXTENSION citext;
  • 31. Extensions
  • 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. 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. 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)

×