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

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 135
  • 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ů: 709
  • Karma: 41
    • 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ů: 184
  • Karma: 8
    • Verze Delphi: 7, XE6
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ů: 135
  • 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ů: 4336
  • Karma: 38
    • 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ů: 709
  • Karma: 41
    • 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ů: 135
  • 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

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1817
  • Karma: 70
  • SW konzultant
    • Verze Delphi: 2009, Tokyo, Rio
Re:Použítí BLOB nebo velkého VarChar
« Odpověď #7 kdy: 16-01-2019, 18:26:06 »
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

To je jedno, protoze ten obsah nectes. Jde tedy jen o efektivitu jeho ukladani pripadne rychlost jeho cteni (coz tedy neni Tvuj pripad, "ten blob přes left join nebudu používat"). Jak uz tady bylo receno.
« Poslední změna: 16-01-2019, 18:53:13 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like the WTFPL license! No more Google, go duck, go!