MS SQL naplózatlan írások

Bubba
MS SQL naplózatlan írások
2011-05-03T15:04:09+02:00
2011-05-04T11:01:38+02:00
2022-07-24T15:56:16+02:00
  • Mondok egy peldat:

    Van egy szerver service aminek az egyik mellék feladata hogy logoljon adatokat (date-time, sessionid, loglevel, text)
    Kb évente egyszer selecteket kell nyomni a logba hibakeresés miatt.
    Ez a loggolás eléggé leterheli az adatbázist (valójában a load 25% -a erre megy el)

    Namost emiatt a funckció miatt dolgozzon valaki 1 hónapot hogy sima file -ban legyen a log és lehessen benne könnyen keresni? (és akkor még mindig nem annyira flexibilis mint egy sql select lenne)

    Nem sokkal egyszerübb lenne egy ilyen:
    INSERT INTO logs WITH (notransaction, nolock) ....

    Ja és senkit sem érdekel hogy ebből a logból esetleg hiányzik pár rekord (pl. server power reset miatt)
    Mutasd a teljes hozzászólást!
  • Szerintem 50-100 milla rekordon már az SQL nyelv sem túl hatékony - legyen az bármely rdbms is.
    Mutasd a teljes hozzászólást!
  • Sajnos ha az ügyfélnem csak MSSQL-je van, akkor azzal kell megoldani. Én is dolgozom egy projekten, ami hatalmas adatmennyiségeket (havi 50-100 millió új sor) végez összetett számításokat SQL-ben, és azoknál ez a "naplózatlan írás" maga lenne a mennyország. Rengeteg időt töltöttünk el anno ebben a projektben azon, hogy az összes nagyméretű adaton dolgozó INSERT/DELETE/UPDATE utasítást körberakjuk egy-egy ciklussal, ami néhány tízezer soronként hajtja végre az adott műveletet. Én mindenesetre nagyon várom, hogy ez a feature bekerüljön más adatbáziskezelőkbe is (sajnos az ügyfeleinknél tipikusan vagy MSSQL vagy Oracle van).
    Mutasd a teljes hozzászólást!
  • No igen, biztos van olyan project, ahol e nélkül nemlehet élni, de akkor ezek szerint ode nem MS SQL a megfelelő választás. Egy a sok közül és nbem is a legolcsóbb :).
    Mutasd a teljes hozzászólást!
  • ez az egész bulk instert messze áll attól ami nekem kéne és amire rákérdeztem :)

    művelet megfelel a 2. link 1. táblázat első néhány sorának

    ja, amikor a tábla üress volt azelőtt

    na, mindegy is, az egész topik inkább csak költői kérdés volt.
    ...hátha majd egyszer lesz valami hasonló ms-sql -ben is

    Nemigazán értem hogy miért nincs ilyen feature. Igaz ellentmond az ACID -nake de rengeteg dologra nagyon hasznos lenne (ha már amugyis ott van az az adatbázis, akkor lehessen bele adatot rakni. ...gyorsan. és ne kelljen ugyanahoz a projethez még pár third-party fejlesztés ami majdnem ugyanaz mint egy adatbázis de mégse)
    Mutasd a teljes hozzászólást!
  • Erre ugyanúgy müködik a tranzakció mint bármi másra.

    Igaz is meg nem is. :)

    Selecting a Recovery Model:
    Bulk-Logged:
    Permits high-performance bulk copy operations.
    Minimal log space is used by bulk operations.


    Minimally Logging Bulk Load Inserts into SQL Server

    Tehát: olyan megoldás nincs, ami teljesen kihagyja a tranzakciós logot, de ha Full-ra állítod a recovery model-t és a BULK művelet megfelel a 2. link 1. táblázat első néhány sorának, akkor minimálisan használja csak.
    Mutasd a teljes hozzászólást!
  • Erre ugyanúgy müködik a tranzakció mint bármi másra.
    Annyi a külömbség hogy nem soronként megy az insert hanem kötegekben.

    Engem telejesen más dolog érdekel:
    gyors sima insert vagy update.

    Tehát tranzakció loggolás nélküli adatbázismüvelet.

    az új ún. naplózatlan írások teszik lehetővé, amelyek olyan adatok kezelésére nyújthatnak optimális megoldást, amelyek gyakran kerülnek módosításra és bővítésre, de amelyek esetében egy-egy művelet ritkán előforduló elvesztése nem okoz különösebben nagy problémát
    Mutasd a teljes hozzászólást!
  • Persze, hogy van. Bulk a hivatalos neve (vagy bulk művelet, pl. BULK INSERT). A cmd-s megoldás a bcp.exe.

    [szerkesztve]
    Mutasd a teljes hozzászólást!
  • Most olvasom a hirt, hogy ez bekerült a progress -be.

    Van ilyesmi az MS-SQL ben? Vagy valami hasonló?
    Mutasd a teljes hozzászólást!
abcd