<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Postgresql_kettastruktuurist</id>
	<title>Postgresql kettastruktuurist - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Postgresql_kettastruktuurist"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Postgresql_kettastruktuurist&amp;action=history"/>
	<updated>2026-11-03T11:49:48Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Postgresql_kettastruktuurist&amp;diff=8288&amp;oldid=prev</id>
		<title>Tammet – 17. aprill 2009, kell 10:03</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Postgresql_kettastruktuurist&amp;diff=8288&amp;oldid=prev"/>
		<updated>2009-04-17T10:03:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Enar Reilenti koostatud ülevaade =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
klaster - ühe serveri instance&amp;#039;i poolt hallatav failide kogum&lt;br /&gt;
&lt;br /&gt;
ühes masinas võib olla mitu klastrit ja serverit &lt;br /&gt;
&lt;br /&gt;
igal klastril oma conf (postgresql.conf, pg_hba.conf, pg_ident.conf)&lt;br /&gt;
&lt;br /&gt;
klastri juur on tavaliselt dir data (/var/lib/pgsql/data) - PGDATA keskkonnamuutuja&lt;br /&gt;
&lt;br /&gt;
Data dir&amp;#039;i sees:&lt;br /&gt;
Item                             Description&lt;br /&gt;
---------------------------------------------------------&lt;br /&gt;
* PG_VERSION	   A file containing the major version number of PostgreSQL&lt;br /&gt;
* base		   Subdirectory containing per-database subdirectories&lt;br /&gt;
* global	   Subdirectory containing cluster-wide tables, such as pg_database&lt;br /&gt;
* pg_clog  	   Subdirectory containing transaction commit status data&lt;br /&gt;
* pg_multixact	   Subdirectory containing multitransaction status data (used for shared row locks)&lt;br /&gt;
* pg_subtrans	   Subdirectory containing subtransaction status data&lt;br /&gt;
* pg_tblspc  	   Subdirectory containing symbolic links to tablespaces&lt;br /&gt;
* pg_twophase  	   Subdirectory containing state files for prepared transactions&lt;br /&gt;
* pg_xlog 	   Subdirectory containing WAL (Write Ahead Log) files&lt;br /&gt;
* postmaster.opts  A file recording the command-line options the server was last started with&lt;br /&gt;
* postmaster.pid   A lock file recording the current server PID and shared memory segment ID (not present after server shutdown&lt;br /&gt;
&lt;br /&gt;
iga (kasutaja) baasi kohta on data/base/ dir&amp;#039;is subdir, mille nimi on andmebaasi nimele vastav ID (OID)&lt;br /&gt;
klastri globaalsest tabelist pg_database&lt;br /&gt;
&lt;br /&gt;
näide:&lt;br /&gt;
===============================================================================&lt;br /&gt;
perf=# SELECT dаtnаme, oid FROM pg_dаtаbаse;&lt;br /&gt;
&lt;br /&gt;
  dаtnаme  |  oid&lt;br /&gt;
&lt;br /&gt;
-----------+-------&lt;br /&gt;
&lt;br /&gt;
 perf      | 16556&lt;br /&gt;
&lt;br /&gt;
 templаte1 |     1&lt;br /&gt;
&lt;br /&gt;
 templаte0 | 16555&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$ cd ./bаse&lt;br /&gt;
&lt;br /&gt;
$ ls -l&lt;br /&gt;
&lt;br /&gt;
totаl 12&lt;br /&gt;
&lt;br /&gt;
drwx------    2 postgres pgаdmin      4096 Jаn 01 20:53 1&lt;br /&gt;
&lt;br /&gt;
drwx------    2 postgres pgаdmin      4096 Jаn 01 20:53 16555&lt;br /&gt;
&lt;br /&gt;
drwx------    3 postgres pgаdmin      4096 Jаn 01 22:38 16556&lt;br /&gt;
&lt;br /&gt;
===============================================================================&lt;br /&gt;
&lt;br /&gt;
iga tabeli ja indeksi jaoks on OID nimega dir&amp;#039;is oma fail - nimetatakse &amp;#039;filenode&amp;#039;&lt;br /&gt;
&lt;br /&gt;
filenod&amp;#039;i nimi tuleb tabelist: pg_class.relfilenode&lt;br /&gt;
&lt;br /&gt;
enamasti langeb relfilenode kokku OID&amp;#039;iga, aga, ajutisel tabelil ei ole relfilenode&amp;#039;i,&lt;br /&gt;
kirje pg_class tabelis on ja OID ka on&lt;br /&gt;
&lt;br /&gt;
TRUNCATE, REINDEX, CLUSTER ja ALTER TABLE võivad muuta filenode&amp;#039;i, OID ei muutu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
näiteks:&lt;br /&gt;
===============================================================================&lt;br /&gt;
templаte1=# SELECT oid, relnаme FROM pg_clаss ORDER BY oid;&lt;br /&gt;
&lt;br /&gt;
  oid  |             relnаme&lt;br /&gt;
&lt;br /&gt;
-------+---------------------------------&lt;br /&gt;
  1247 | pg_type&lt;br /&gt;
&lt;br /&gt;
  1249 | pg_аttribute&lt;br /&gt;
&lt;br /&gt;
  1255 | pg_proc&lt;br /&gt;
&lt;br /&gt;
  1259 | pg_clаss&lt;br /&gt;
&lt;br /&gt;
  1260 | pg_shаdow&lt;br /&gt;
&lt;br /&gt;
  1261 | pg_group&lt;br /&gt;
&lt;br /&gt;
  1262 | pg_dаtаbаse&lt;br /&gt;
&lt;br /&gt;
 16384 | pg_аttrdef&lt;br /&gt;
===============================================================================&lt;br /&gt;
&lt;br /&gt;
kui tabeli või indeksi faili suurus läheb üle 1GB, siis tehakse segmendid:&lt;br /&gt;
esimene segment on algne filenode, teine filenoad.1, kolmas filenode.2 jne&lt;br /&gt;
&lt;br /&gt;
iga tabeli või indeksi fail jaguneb page&amp;#039;ideks&lt;br /&gt;
&lt;br /&gt;
näide:&lt;br /&gt;
===============================================================================&lt;br /&gt;
perf=# SELECT relnаme, oid, relpаges, reltuples FROM pg_clаss&lt;br /&gt;
&lt;br /&gt;
   relnаme    | oid  | reltuples | relpаges&lt;br /&gt;
&lt;br /&gt;
--------------+------+-----------+----------&lt;br /&gt;
&lt;br /&gt;
 pg_type      | 1247 |       143 |        2&lt;br /&gt;
&lt;br /&gt;
 pg_аttribute | 1249 |       795 |       11&lt;br /&gt;
&lt;br /&gt;
 pg_proc      | 1255 |      1263 |       31&lt;br /&gt;
&lt;br /&gt;
 pg_clаss     | 1259 |       101 |        2&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
$ ls -l 1247 1249&lt;br /&gt;
&lt;br /&gt;
-rw-------    1 postgres pgаdmin     16384 Jаn 01 20:53 1247&lt;br /&gt;
&lt;br /&gt;
-rw-------    1 postgres pgаdmin     90112 Jаn 01 20:53 1249&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 16384/2 = 8192&lt;br /&gt;
 90122/11 = 8192&lt;br /&gt;
 eаch pаge is 8192 bytes - saab muuta serveri kompileerimise käigus&lt;br /&gt;
&lt;br /&gt;
===============================================================================&lt;br /&gt;
&lt;br /&gt;
veel üks näide:&lt;br /&gt;
===============================================================================&lt;br /&gt;
&lt;br /&gt;
robots=# select relname, oid,relfilenode, relpages,reltuples from pg_class order by reltuples;&lt;br /&gt;
                              relname          |  oid  | relfilenode | relpages | reltuples&lt;br /&gt;
 &lt;br /&gt;
...&lt;br /&gt;
 strings                                       | 16389 |       16389 |        4 |       560&lt;br /&gt;
 strings_string_key                            | 16395 |       16395 |        6 |       560&lt;br /&gt;
 pg_operator                                   |  2617 |        2617 |       13 |       702&lt;br /&gt;
 pg_operator_oprname_l_r_n_index               |  2689 |        2689 |       11 |       702&lt;br /&gt;
 pg_operator_oid_index                         |  2688 |        2688 |        4 |       702&lt;br /&gt;
 pg_description_o_c_o_index                    |  2675 |        2675 |       12 |      1988&lt;br /&gt;
 pg_description                                |  2609 |        2609 |       16 |      1988&lt;br /&gt;
 pg_proc_oid_index                             |  2690 |        2690 |        7 |      2143&lt;br /&gt;
 pg_proc                                       |  1255 |        1255 |       50 |      2143&lt;br /&gt;
 pg_proc_proname_args_nsp_index                |  2691 |        2691 |       40 |      2143&lt;br /&gt;
 pg_attribute_relid_attnam_index               |  2658 |        2658 |       28 |      2255&lt;br /&gt;
 pg_attribute_relid_attnum_index               |  2659 |        2659 |        9 |      2255&lt;br /&gt;
 pg_attribute                                  |  1249 |        1249 |       38 |      2255&lt;br /&gt;
 pg_depend_depender_index                      |  2673 |        2673 |       26 |      5267&lt;br /&gt;
 pg_depend                                     |  2608 |        2608 |       37 |      5267&lt;br /&gt;
 pg_depend_reference_index                     |  2674 |        2674 |       28 |      5267&lt;br /&gt;
 robodata_property_idx                         | 16441 |       16441 |     2256 |    786039&lt;br /&gt;
 robodata_addtime_idx                          | 16442 |       16442 |     2167 |    786039&lt;br /&gt;
 robodata_date_idx                             | 16443 |       16443 |     2821 |    786039&lt;br /&gt;
 robodata_pkey                                 | 16403 |       16403 |     1728 |    786039&lt;br /&gt;
 robodata_subject_idx                          | 16440 |       16440 |     2258 |    786039&lt;br /&gt;
 idx                                           | 24782 |       24782 |     3034 |    787235&lt;br /&gt;
 robodata_sender_receiver_property_subject_idx | 24787 |       24787 |     3034 |    787241&lt;br /&gt;
 robodata                                      | 16397 |       16397 |    10792 |    787241&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
robots=# \d robodata&lt;br /&gt;
                                     Table &amp;quot;public.robodata&amp;quot;&lt;br /&gt;
  Column   |            Type             |                       Modifiers&lt;br /&gt;
-----------+-----------------------------+-------------------------------------------------------&lt;br /&gt;
 id        | integer                     | not null default nextval(&amp;#039;robobase_id_seq&amp;#039;::regclass)&lt;br /&gt;
 sender    | integer                     | not null&lt;br /&gt;
 receiver  | integer                     |&lt;br /&gt;
 addtime   | timestamp without time zone | not null default now()&lt;br /&gt;
 status    | character(1)                | not null default &amp;#039;A&amp;#039;::bpchar&lt;br /&gt;
 subject   | integer                     | not null&lt;br /&gt;
 property  | integer                     | not null&lt;br /&gt;
 value     | character varying(256)      | not null&lt;br /&gt;
 valuetype | integer                     | not null&lt;br /&gt;
 rid       | integer                     |&lt;br /&gt;
 date      | timestamp without time zone |&lt;br /&gt;
 usectime  | integer                     |&lt;br /&gt;
 datestamp | timestamp without time zone |&lt;br /&gt;
 usecstamp | integer                     |&lt;br /&gt;
 source    | integer                     |&lt;br /&gt;
 context   | integer                     |&lt;br /&gt;
Indexes:&lt;br /&gt;
    &amp;quot;robodata_pkey&amp;quot; PRIMARY KEY, btree (id)&lt;br /&gt;
    &amp;quot;idx&amp;quot; btree (subject, property, addtime)&lt;br /&gt;
    &amp;quot;robodata_addtime_idx&amp;quot; btree (addtime)&lt;br /&gt;
    &amp;quot;robodata_date_idx&amp;quot; btree (date)&lt;br /&gt;
    &amp;quot;robodata_property_idx&amp;quot; btree (property)&lt;br /&gt;
    &amp;quot;robodata_sender_receiver_property_subject_idx&amp;quot; btree (sender, receiver, property, subject)&lt;br /&gt;
    &amp;quot;robodata_subject_idx&amp;quot; btree (subject)&lt;br /&gt;
Foreign-key constraints:&lt;br /&gt;
    &amp;quot;robodata_context_fkey&amp;quot; FOREIGN KEY (context) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_property_fkey&amp;quot; FOREIGN KEY (property) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_receiver_fkey&amp;quot; FOREIGN KEY (receiver) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_sender_fkey&amp;quot; FOREIGN KEY (sender) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_source_fkey&amp;quot; FOREIGN KEY (source) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_subject_fkey&amp;quot; FOREIGN KEY (subject) REFERENCES strings(id)&lt;br /&gt;
    &amp;quot;robodata_valuetype_fkey&amp;quot; FOREIGN KEY (valuetype) REFERENCES strings(id)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
postgres@eliko4:~/8.3/main/base/16384$ ls -l 16397&lt;br /&gt;
-rw------- 1 postgres postgres 88408064 2009-04-14 09:34 16397&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
88408064 / 10792 = 8192 bati iga page&lt;br /&gt;
&lt;br /&gt;
88408064 / 787241 = 112.3 baiti iga rea kohta keskmiselt&lt;br /&gt;
===============================================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
page&amp;#039;il on 5 osa:&lt;br /&gt;
&lt;br /&gt;
Item         Description&lt;br /&gt;
* PageHeaderData   24 bytes long. Contains general information about the page, including free space pointers.&lt;br /&gt;
* ItemIdData       Array of (offset,length) pairs pointing to the actual items. 4 bytes per item.&lt;br /&gt;
* Free space       The unallocated space. New item pointers are allocated from the start of this area, new items from the end.&lt;br /&gt;
* Items            The actual items themselves.&lt;br /&gt;
* Special space    Index access method specific data. Different methods store different data. Empty in ordinary tables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Items osa &amp;#039;item&amp;#039; on data tabeli puhul row, index&amp;#039;i puhul node (entry)&lt;br /&gt;
&lt;br /&gt;
PageHeaderData hoiab pointereid (offset) Free space&amp;#039;i algusesse ja lõppu, Special space&amp;#039;ile;&lt;br /&gt;
flage;&lt;br /&gt;
viimase muutuse xlog andmeid (XLogRecPtr, TimeLineID);&lt;br /&gt;
versiooni !:&lt;br /&gt;
  PostgreSQL 8.3 alates 4&lt;br /&gt;
  PostgreSQL 8.1, 8.2   3&lt;br /&gt;
  PostgreSQL 8.0        2&lt;br /&gt;
  PostgreSQL 7.3, 7.4   1&lt;br /&gt;
  varasemad             0&lt;br /&gt;
&lt;br /&gt;
ItemIdData&amp;#039;s on viidad itemitele, iga viit 4 baiti: 2 offset page&amp;#039;i algusest + 2 item&amp;#039;i pikkus.&lt;br /&gt;
&lt;br /&gt;
itemite hulka saab PageHeaderData&amp;#039;st välja rehkendada.&lt;br /&gt;
&lt;br /&gt;
kui item&amp;#039;it page&amp;#039;i sees ümber paigutatakse, siis viida asukoht (array&amp;#039;s) jääb samaks!&lt;br /&gt;
&lt;br /&gt;
seega mistahes viidad item&amp;#039;ile (ItemPointer, also known as CTID) esitatakse andmebaasis nii:&lt;br /&gt;
viita pageile ja item&amp;#039;i indeksit array&amp;#039;s&lt;br /&gt;
&lt;br /&gt;
Special space kas puudub või hoitakse seal access meetodite spetsiifilist datat,&lt;br /&gt;
näiteks b-puu indeksi vasaku ja parema naaber-page&amp;#039;i (sibling) viidad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
item jaguneb kaheks: muutuva pikkusega header ja data osa&lt;br /&gt;
&lt;br /&gt;
headeris on kindlasti:&lt;br /&gt;
  Field       Length   Description&lt;br /&gt;
  t_xmin      4 bytes  insert XID stamp&lt;br /&gt;
  t_xmax      4 bytes  delete XID stamp&lt;br /&gt;
  t_cid       4 bytes  insert and/or delete CID stamp (overlays with t_xvac)&lt;br /&gt;
  t_xvac      4 bytes  XID for VACUUM operation moving a row version&lt;br /&gt;
  t_ctid      6 bytes  current TID of this or newer row version&lt;br /&gt;
  t_infomask2 2 bytes  number of attributes, plus various flag bits&lt;br /&gt;
  t_infomask  2 bytes  various flag bits&lt;br /&gt;
  t_hoff      1 byte   offset to user data&lt;br /&gt;
&lt;br /&gt;
t_hoff must always be a multiple of the MAXALIGN distance for the platform&lt;br /&gt;
&lt;br /&gt;
lisaks optional headeri osad: null bitmap ja object id&lt;br /&gt;
&lt;br /&gt;
kui aligne&amp;#039;i pärast on vaja jätta tühja ruumi, jäetakse see null bitmapi ja object id vahele&lt;br /&gt;
&lt;br /&gt;
data osa interpreteerimiseks on vaja teiste (süsteemsete) tabelite abi:&lt;br /&gt;
&lt;br /&gt;
tulpade väärtused on järjest ühes baidijadas&lt;br /&gt;
&lt;br /&gt;
pg_attribute tabelist veerud attlen ja attalign määravad välja väärtuse asukoha baidijadas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
näide:&lt;br /&gt;
=====================================================================&lt;br /&gt;
robots=# select count(*) from pg_attribute;&lt;br /&gt;
 count                                     &lt;br /&gt;
-------                                    &lt;br /&gt;
  2262                                     &lt;br /&gt;
(1 row)                                    &lt;br /&gt;
&lt;br /&gt;
                                                   &lt;br /&gt;
robots=# select * from pg_attribute where attname = &amp;#039;subject&amp;#039; limit 7;&lt;br /&gt;
&lt;br /&gt;
 attrelid | attname | atttypid | attstattarget | attlen | attnum | attndims | attcacheoff | atttypmod | attbyval | attstorage | attalign | attnotnull | atthasdef | attisdropped | attislocal | attinhcount&lt;br /&gt;
----------+---------+----------+---------------+--------+--------+----------+-------------+-----------+----------+------------+----------+------------+-----------+--------------+------------+-------------&lt;br /&gt;
    16397 | subject |       23 |            -1 |      4 |      6 |        0 |          -1 |        -1 | t        | p          | i        | t          | f        | f            | t          |           0&lt;br /&gt;
    16440 | subject |       23 |            -1 |      4 |      1 |        0 |          -1 |        -1 | t        | p          | i        | f          | f        | f            | t          |           0&lt;br /&gt;
    24782 | subject |       23 |            -1 |      4 |      1 |        0 |          -1 |        -1 | t        | p          | i        | f          | f        | f            | t          |           0&lt;br /&gt;
    24787 | subject |       23 |            -1 |      4 |      4 |        0 |          -1 |        -1 | t        | p          | i        | f          | f        | f            | t          |           0&lt;br /&gt;
(4 rows)&lt;br /&gt;
&lt;br /&gt;
robots=#&lt;br /&gt;
robots=# select * from pg_attribute where attname = &amp;#039;receiver&amp;#039; limit 7;&lt;br /&gt;
 attrelid | attname  | atttypid | attstattarget | attlen | attnum | attndims | attcacheoff | atttypmod | attbyval | attstorage | attalign | attnotnull | atthasdef | attisdropped | attislocal | attinhcount&lt;br /&gt;
----------+----------+----------+---------------+--------+--------+----------+-------------+-----------+----------+------------+----------+------------+-----------+--------------+------------+-------------&lt;br /&gt;
    16397 | receiver |       23 |            -1 |      4 |      3 |        0 |          -1 |        -1 | t        | p          | i        | f          | f         | f            | t          |           0&lt;br /&gt;
    24787 | receiver |       23 |            -1 |      4 |      2 |        0 |          -1 |        -1 | t        | p          | i        | f          | f         | f            | t          |           0&lt;br /&gt;
(2 rows)&lt;br /&gt;
&lt;br /&gt;
=====================================================================&lt;br /&gt;
&lt;br /&gt;
kõige parem olukord on siis, kui kõik väljad on fixed pikkusega ja null&amp;#039;e ei ole&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
kui välja andmetüüp on muutuva pikkusega (attrlen=-1) jaguneb väli omakorda dataks ja päiseks&lt;br /&gt;
&lt;br /&gt;
päises on öeldud data pikkus ja TOAST info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TOAST - The Oversized-Attribute Storage Technique or &amp;quot;the best thing since sliced bread&amp;quot;&lt;br /&gt;
&lt;br /&gt;
kuna ei lubata data row jagamist mitmesse page&amp;#039;i, siis tuleb suurte väärtuste puhul pakkida&lt;br /&gt;
&lt;br /&gt;
või jagada row osadeks ja panna teise tabelisse.&lt;br /&gt;
&lt;br /&gt;
TOAST&amp;#039;i saab teha ainult muutuva pikkusega väljadel (varlena)&lt;br /&gt;
&lt;br /&gt;
flag bit&amp;#039;id varlena välja päises näitavad, kas tegu on:&lt;br /&gt;
tavalise dataga otse väljas&lt;br /&gt;
pakitud dataga otse väljas&lt;br /&gt;
viidaga (+muud andmed) TOAST&amp;#039;itud datale teises tabelis&lt;br /&gt;
&lt;br /&gt;
kui kasutaja tabelis on võimalikud suured väärtused, siis tehakse automaatselt&lt;br /&gt;
selle tabeli TOAST tabel, mille oid kirjutatakse  pg_class.reltoastrelid välja&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
suured väärtused jagatakse tükkideks - 2000 baiti tavaliselt - 4 tükki mahub 1 page&amp;#039;i&lt;br /&gt;
&lt;br /&gt;
iga tükk läheb row&amp;#039;ks TOAST tabelis&lt;br /&gt;
&lt;br /&gt;
chunk_id ja chunk_seq väljad seovad (loogiliselt) tükid kokku&lt;br /&gt;
&lt;br /&gt;
päris tabeli row väärtuse kohal on TOAST tabeli oid ja chunk_id (+suurused)&lt;br /&gt;
&lt;br /&gt;
seda, kui suur peab välja väärtus olema, et TOAST rakenduks, saab konfida &lt;br /&gt;
&lt;br /&gt;
tabeli tulpadel võib olla 4 erinevat TOAST strateegiat:&lt;br /&gt;
PLAIN    -  ei pakkimist, ei TOAST&amp;#039;i&lt;br /&gt;
EXTENDED -  algul üritatakse pakkida, kui ei piisa, siis TOAST&amp;#039;ida&lt;br /&gt;
EXTERNAL -  pakkimist ei ole lubatud (tekstiotsinguks)&lt;br /&gt;
MAIN     -  pakkimine on lubatud, TOAST&amp;#039;i kasutatakse viimases hädas, kui muul viisil ei saa rida väikseks teha&lt;br /&gt;
&lt;br /&gt;
ALTER TABLE SET STORAGE - TOAST strateegia muutmiseks&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>