PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Postgres пренаписва ли целия ред при актуализация?

Бране на c) от вашите въпроси:

Както @Craig вече обясни , колони, които са „способни на TOAST“ и са по-големи от определен праг, се съхраняват извън линия в специална TOAST таблица за таблица (отделни „разклонения на релации“, отделни файлове на диска). И така, 5 MB bytea колоната ще остане почти недокосната при актуализация, ако самата колона не бъде променена. Ръководството:

Удебелен акцент е мой.
Редът в разклонението на главната релация все още се копира и мъртъв ред остава зад него, когато се актуализира (независимо дали някакви стойности действително са променени). За големи размери на редове следното решение може да се изплати:

Създайте малка отделна таблица 1:1 за често променяни флагове. Само първичния ключ (=външен ключ в същото време) и често променяните флагове. Това ще направи актуализациите много по-бързи и ще запази дисковото пространство - за първоначални допълнителни разходи и някои разходи за заявки, които трябва да се присъединят към двете таблици (други заявки всъщност стават по-бързи). Повече за изискването за дисково пространство на редовете на таблицата:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извикам функцията на Postgres, връщаща SETOF запис?

  2. Псевдоним на функция за функцията по подразбиране на Postgres

  3. Кортежите не се вмъкват последователно в таблицата на базата данни?

  4. Производителността не се увеличава, дори се увеличава размерът на work_mem

  5. Операторът не съществува:integer =integer[] в заявка с ANY