Postgresql

Postgres 中文本欄位的預設大小是多少?

  • April 29, 2015

在官方文件(http://www.postgresql.org/docs/9.1/static/datatype-character.html)中,它聲明text欄位是variable unlimited length.

我想知道這個欄位的預設大小(或欄位的最小大小)是多少?

列的預設最小大小text(表示一個值NULL)取決於行的其餘部分。在大多數情況下,如果 NULL 點陣圖有空間容納另一個位,它是絕對免費的。

有關計算有效行大小的更多資訊:

預設情況下,除非您在表定義中指定預設約束,否則此類列將是 NULL(基本上為零長度,但請記住零長度字元串和 NULL 之間存在差異),並且它會在您插入時根據需要增長數據。

如果您要問它在磁碟上佔用了多少空間,那麼這當然永遠不會完全為零,但是很少有最小大小真正重要的時候(如果您要儲存數百萬行具有非常短或大部分為 NULL 的文本欄位,則可能)。假設 postgres 的儲存引擎使用的結構與 MSSQL 沒有什麼不同,那麼如果它們儲存在頁外(小值可能儲存在頁內),就會有一個頁引用(8 個字節?)來查找字元串的開頭- 所以你可能會認為,加上 NULL 點陣圖中的空間和任何其他標誌,如頁內或頁外,作為這種類型的最小占用空間。

引用自:https://dba.stackexchange.com/questions/52639