Table partitioning

Table partitioning is used to increase performance by physically arranging data in the hard disk based on a certain grouping criteria. There are two techniques for table partitioning:

  • Vertical table partitioning: The table is divided into several tables in order to decrease the row size. This allows a faster sequential scan on divided tables, as a relation page holds more rows. To explain, let's assume that we want to store pictures for each client in the database by adding a column of the byte or blob type to the client table. Now, since we have a table that might contain a big row, the number of rows per page is reduced. To solve this, one can create another table that references the client table, as follows:
CREATE TABLE client_picture (
id int primary key,
client_id int references client(id),
picture bytea NOT NULL
);
  • Horizontal table partitioning: This is used to decrease the whole table size by splitting rows over multiple tables; it is supported by table inheritance and the constraint exclusion. In horizontal table partitioning, the parent table is often a proxy, while the child tables are used to store actual data. Table inheritance can be used to implement horizontal table partitioning, whereas constraint exclusion is used to optimize performance by only accessing the child tables that contain the required data when performing a query. 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset