sql >> Databáze >  >> RDS >> PostgreSQL

Existují problémy s výkonem při ukládání souborů v PostgreSQL?

Máte v zásadě dvě možnosti. Data můžete ukládat přímo do řádku nebo můžete použít funkci velkých objektů. Protože PostgreSQL nyní používá něco, co se nazývá TOAST Chcete-li přesunout velká pole z tabulky, neměla by být žádná penalizace výkonu spojená s přímým ukládáním velkých dat do řádku. Ve velikosti pole zůstává limit 1 GB. Pokud je to příliš omezené nebo chcete-li streamovací API, můžete použít funkci velkých objektů, která vám poskytne něco více jako deskriptory souborů v databázi. LO ID uložíte do svého sloupce a můžete z něj číst a zapisovat.

Osobně bych navrhoval, abyste se vyhýbali zařízení s velkými objekty, pokud to nezbytně nepotřebujete. S TOAST je většina případů použití pokryta pouhým použitím databáze způsobem, který byste očekávali. U velkých objektů si zatěžujete další údržbou, protože musíte sledovat LO ID, které jste použili, a nezapomeňte je odpojit, když se již nebudou používat (ale ne dříve), nebo budou sedět ve vašem datový adresář zabírá místo navždy. Kolem sebe je také spousta zařízení, která mají výjimečné chování, jejichž detaily mi unikají, protože je nikdy nepoužívám.

Pro většinu lidí je velkým omezením výkonu spojeným s ukládáním velkých dat v databázi to, že váš ORM software vytáhne velká data na každý dotaz, pokud mu nedáte konkrétní pokyn, aby to nedělal. Měli byste se postarat o to, abyste sdělili Hibernate nebo čemukoli, co používáte, aby se s těmito sloupci nakládalo jako s velkými a načítali je pouze tehdy, když jsou konkrétně požadovány.



  1. chyba node-postgres $1 IS NULL

  2. mysql vyberte top n max hodnot

  3. Hromadné vkládání nebo aktualizace pro tabulky s poli příloh

  4. Může MySQL zkontrolovat, zda soubor existuje?