Blog: PostgreSQL , p.5
Indexes in PostgreSQL — 2
Interface
In the first article, we've mentioned that an access method must provide information about itself. Let's look into the structure of the access method interface.
Indexes in PostgreSQL — 1
Introduction
This series of articles is largely concerned with indexes in PostgreSQL.
Any subject can be considered from different perspectives. We will discuss matters that should interest an application developer who uses DBMS: what indexes are available, why there are so many different types of them, and how to use them to speed up queries. The topic can probably be covered in fewer words, but in secrecy we hope for a curious developer, who is also interested in details of the internals, especially since understanding of such details allows you to not only defer to other's judgement, but also make conclusions of your own.
Development of new types of indexes is outside the scope. This requires knowledge of the C programming language and pertains to the expertise of a system programmer rather than an application developer. For the same reason we almost won't discuss programming interfaces, but will focus only on what matters for working with ready-to-use indexes.
In this article we will discuss the distribution of responsibilities between the general indexing engine related to the DBMS core and individual index access methods, which PostgreSQL enables us to add as extensions. In the next article we will discuss the interface of the access method and critical concepts such as classes and operator families. After that long but necessary introduction we will consider details of the structure and application of different types of indexes: Hash, B-tree, GiST, SP-GiST, GIN and RUM, BRIN, and Bloom.
Before we start, I would like to thank Elena Indrupskaya for translating the articles to English. Things have changed a bit since the original publication in 2017 on habr.com. My comments on the current state of affairs are indicated like this.
Patch by Anastasia Lubennikova accepted in the upcoming version of PostgreSQL
Anastasia Lubennikova, a Postgres Pro leading developer, has reported at PGConf.India that Peter Geoghegan had committed recently the long-awaited B-Tree index deduplication patch to PostgreSQL.
Millions of Queries per Second: PostgreSQL and MySQL’s Peaceful Battle at Today’s Demanding Workloads
This blog compares how PostgreSQL and MySQL handle millions of queries per second.
PostgreSQL 9.6 is Released: Contribution of Postgres Professional
PostgreSQL 9.6 was released yesterday. This is a great release which provides to users set of outstanding new features. We are especially happy that Postgres Professional did substantial contribution to this release.
Scalable Real-time Product Search using PostgreSQL with Citus
We are delighted to repost the article by Citusdata, and appreciate the recogintion of our contribution: "Special thanks to the people at Postgres Professional for contributing most of the full-text search, JSONB, and GIN index features in PostgreSQL, as well as the initial code for the Citus COPY feature"
Monitoring Wait Events in PostgreSQL 9.6
Recently Robert Haas has committed a patch which allows seeing some more detailed information about current wait event of the process. In particular, user will be able to see if process is waiting for heavyweight lock, lightweight lock (either individual or tranche) or buffer pin. The full list of wait events is available in the documentation. Hopefully, it will be more wait events in further releases.
Postgres developers (retrospective in pictures)
Oleg Bartunov: Today I have feeling, that our developers community needs some nostalgia.
Beta-release of pg_pathman partitioning extension
pg_pathman is distributed as PostgreSQL 9.5 extension and available at github
Recently, we got access to a big server: IBM 9119-MHE with 8 CPUs * 8 cores * 8 threads. We decided to take advantage of this and investigate the read scalability of postgres (pgbench -S) at this server.