Autor Téma: Použítí BLOB nebo velkého VarChar  (Přečteno 1115 krát)

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 145
  • Karma: 8
    • Verze Delphi: XE2
Použítí BLOB nebo velkého VarChar
« kdy: 15-01-2019, 15:04:20 »
Excellent
Rated 1 time
Ahoj všem
Potřeboval bych ukládat XML soubor do databáze. Soubor může mít maximálně 1000 znaků
S tímto uloženým xml údajem  se už nebude prakticky dál pracovat a slouží pouze pro archivaci,
ale s tabulkou jako takovou (ostatními údaji) se pracuje vcelku intenzivně (přes Left Join)
Co je lepší použít z hlediska rychlosti  načítáním když už ten blob přes left join nebudu používat   ?

Varchar 1000 
nebo 
BLOB textového typu
BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET UTF8 COLLATE UTF8 

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #1 kdy: 15-01-2019, 15:10:58 »
Řekl bych, že méně zatěžující bude BLOB, protože tam jsou data jako taková "mimo" a při normálním procházení tabulky se tím pádem nezpracovávají. Navíc nemusíš hlídat, jestli XML po nějakých změnách náhodou už nemá 1020 bajtů...

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 193
  • Karma: 8
    • Verze Delphi: 7, XE6, Delphi 10.2 Tokyo
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #2 kdy: 15-01-2019, 15:30:34 »
Určitě Blob, nikdy se nemůžeš spolehnout na to, že za rok, dva se xml nerozkošatí a 1000 znaků bude najednou málo. Do Blobu můžeš zapisovat stále a bez omezení.

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 145
  • Karma: 8
    • Verze Delphi: XE2
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #3 kdy: 15-01-2019, 15:53:55 »
Ano nehlídat velikost může být jako bonus, ale primárně mi jde o rychlost načítání , přenos přes net, případně pamětové nároky při načítání.
Segment size může být v tomto případě třeba 1 ?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4397
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #4 kdy: 15-01-2019, 16:27:02 »
Excellent
Rated 1 time
Ale pri načítaní predsa definuješ, pomocou Query, že ten XML nechceš. Takže ťahať ho nebudeš! Nech už je v akejkoľvek podobe.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 754
  • Karma: 42
    • Verze Delphi: 10.3
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #5 kdy: 15-01-2019, 17:03:26 »
Pokud je to varchar, tak je součástí každého záznamu, a jakmile Firebird musí tu tabulku procházet a daný záznam rozbalit, pracuje vždy i s tímhle polem (přestože se pak třeba neposílá na klienta, tak ho stejně musí načíst z disku apod.). Když to bude blob, měl by být uložený mimo záznam a nebude téměř zdržovat. Co ale nevím, je efektivita ukládání těch blobů - jestli se vždy ukládají na samostatné databázové stránky (a může být víc blobů v jedné stránce, nebo tam zůstává hromada volného místa?), nebo zda se ukládají mezi normální záznamy.

Segment size většinou uvádějí, že je ignorován :-)

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 145
  • Karma: 8
    • Verze Delphi: XE2
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #6 kdy: 16-01-2019, 11:18:56 »
Segment size většinou uvádějí, že je ignorován :-)

Já si doposud myslel že pokud se data vejdou velikostně do   segment size  tak se ukladají přímo do tabulky k ostatním datům
a ne do samostatného blobu na který odkazuje interní BlobId