Zmena v databáze nemení veľkosť databázy   otázka

VB.NET, Databáze

Prosím o pomoc

V programe vo VB7 mením v DB.mdb(cca6MB) dve tabuľky (cca5MB) po zmene veľkosť DB sa nemení.

tabuľky mením

   Obrat1TableAdapter.DeleteQ()

pričom DeleteQ()

   DELETE FROM Obrat1

kde robím chybu

ďakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

což takhle koukat na počet řádků místo velikosti v db?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A problém máte v čem? To že se velikost datového souboru nezmění je přece očekávaný chování.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na začiatku roku DB.mdb mala veľkosť 220 kB po naplnení tabuliek má 6MB

Očakával som, po zmazaní záznamov v dvoch tabuľkach, že sa zmení veľkosť DB.mdb ostala bez zmeny.

Bude stále narástať ?

ďakujem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak pokud opravdu nutně potřebujete zmenšit datové soubory databáze pouze na nutnou kapacitu, tak použijte SHRINK databáze.

Buď z Management studia, nebo skriptem například:

DBCC SHRINKDATABASE(N'jmenodatabase', 1)

GO
DBCC SHRINKFILE (N'jmenosouborudatabase_Data' , 0, TRUNCATEONLY)
DBCC SHRINKFILE (N'jmenosouborudatabase_Log' , 0, TRUNCATEONLY)
GO

S tím, že to samozřejmě pak bude pomalejší při vkládání nových dat, protože se budou muset znovu alokovat datové stránky databáze.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem,

ja som naučený ešte z praveku programovania, šetriť s pamäťou,

programy sme skracovali ako sa len dalo, niektore procedúry sme

upravovali aj v strojovom kóde.

Ak mám tomu rozumieť DB pri štarte alokuje si určitú pamäť, pokiaľ táto pamäť stačí tak

sa alokovaný priestor nemení. Takže ak v tabuľkách zmažem záznamy a rozsah nových

vložených záznamov bude priblžne rovnaký predošlým, DB nezmení veľkosť.

Rád by som odskúšal Váš návrh, ale neviem ako by som to zapracoval vo VB7.

Ešte ráz Vám veľmi pekne dakujem za námahu

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Předpokládám, že je řeč o Microsoft SQL serveru. To je velice sofistikovaný databázový engine, který se snaží o jediné - aby se dotazy zpracovávaly v co možná nejkratším čase, tzn. abyste na databázi "nemusel čekat". A světe div se, k tomu patří i to, že se obětuje část místa na disku, když je potřeba.

Jinými slovy, pokud by se databázový stroj měl rozhodnout, jestli se právě teď bude zabývat údržbou databáze nebo vracením odpovědí na vaše dotazy, vybere ty odpovědi a údržbu databáze odloží (na "za chvíli", na "za neurčito" nebo i na "za nikdy").

Z toho pak vyplývá, že podobná doporučení jako je toto:

http://blogs.msdn.com/b/buckwoody/archiv...

dávají smysl, i když by se Vám mohlo zdát, že jde o plýtvání.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback