"Podvodní kameny" DML aktualizační tým pro MySQL

Každý programátor, který musel pracovat s databázemi, se setkal s operátory DML (jazyk manipulace s daty), jako například Vybrat, Vložit, Odstranit a Aktualizovat. MySQL prostředí také používá všechny výše uvedené příkazy ve svém arzenálu. Tito operátoři logicky říkají o svém cíli - volbě záznamů, vložení nových hodnot, aktualizaci stávajících dat, plné nebo podle stanovených podmínek odstranění informací v databázi. Výukové teoretické materiály podrobně popisují principy práce každého týmu a jeho syntaxe, ale nikde se nenachází zmínka o obtížích, které mohou vzniknout v praxi při jeho užívání. Tento materiál bude věnován úvahám o některých z nich.


Krátce o operátorech DML (Insert)

Než budete pokračovat dále, je třeba ještě jednou podrobněji vzpomenout na účel každé funkce. Budeme se více zajímat o dva operátory: Vložit a Aktualizovat, jelikož se jedná o hlavní obtíže při zpracování velkých objemů dat.
Začněte příkazem Insert a poté pokračujte hladce na Aktualizovat. MySQL, stejně jako všechny ostatní moderní DBMS, používá operaci Insert pro přidání nových položek do existujících databázových tabulek. Syntaxe operace je velmi jednoduchá a srozumitelná. Obsahuje seznam polí, kde bude zadána hodnota, cíl - název tabulky - a zadaný seznam dat. Při každém spuštění příkazu Insert bude databázedoplňovány novými hodnotami.


Operátor aktualizace

V praxi se však často vyskytují situace, kdy je třeba aktualizovat některé datové množiny na jednu nebo více hodnot atributů. Jako příklad lze uvést situaci, kdy společnost prochází reformou s následným přejmenováním hlavních oddělení. V tomto případě musíte provést změny pro každé oddělení. Pokud se změní pouze názvy, problém se vyřeší velmi rychle. Ale pokud se změní kódování každé součásti celé produkce, která obvykle slouží jako primární klíč, pak to způsobí změny informací a každého zaměstnance.
Aktualizaci lze použít k vyřešení tohoto problému. MySQL je server, pracující s velkým množstvím záznamů, pomocí operátora aktualizace, provede požadovaný dotaz a vyřeší problém. Ale někdy během upgradu nejsou zcela srozumitelné a těžko srozumitelné složitosti. Jedná se o obtížnost aktualizace záznamů, jazyk bude pokračovat.

Co říká teorie

Aktualizační příkaz, jak je uvedeno výše, slouží k aktualizaci stávajících položek v tabulce. V praxi však klienti, kteří přistupují k databázovým serverům, si nejsou vždy vědomi, zda v tabulkách existuje specifická množina dat nebo ne. Předběžná kontrola dostupnosti dat v databázi pro další osvěžení vede k časovým nákladům a ztrátě serverových funkcí. Aby se tomu zabránilo, DBMS má speciální design MySQL - Insert * Update, vkteré lze vložit nebo aktualizovat nezávisle na sobě. To znamená, že pokud je v tabulce zaznamenána určitá podmínka, dojde k aktualizaci. Pokud nejsou data za této podmínky nalezena, bude server MySQL schopen dokončit požadavek na údaje.

Aktualizace přítomnost duplicitních

Důležitou součástí tohoto příbalového letáku - požadavky na systém pro správu databází MySQL - «Na Duplicitní Key Update» konzole. Plná syntaxe dotazu je následující: «vložit do test_table (employer_id, název) hodnoty (1'Abramov‚) na duplikátu klíče aktualizaci last_modified = NOW (); »Informace o výrobku
Tento požadavek může být použit pro záznam činnosti zaměstnanců, jako je okamžiku překročení průchozí podniky, následuje počítání časového intervalu a zpoždění detekce. Aby nedošlo k zařazení několika záznamů do tabulky, stačí, aby každý zaměstnanec vedl účet s neustálou aktualizací. Je to návrh duplicitní kontroly, který vám to umožňuje.

Ve skutečnosti jsou problémy

Vzhledem ke výše uvedený příklad registračních akcí zaměstnanců u vchodu, jak tento problém může být snížena pomocí samouvelychyvayuschyhsya (auto _ přírůstek) pole, které se běžně používají k vyplnění hodnotu primárního klíče (primární _ klíč). Při použití příkazu Aktualizace MySQL v konstrukci s přírůstkem Vložit auto_ se pole neustále zvyšují. Stejně tak se všechno stane, když je použita náhradní konstrukce, pokud jsou detekovány duplikáty. Hodnota automatického přírůstku se zvyšuje, i když není potřeba. Z tohoto důvodu existují problémy s průchodemhodnoty nebo přetečení rozpětí, které pak vedou k porušování výkonné systémy pro správu databází.

S největší pravděpodobností je problém

popsal problém je třeba považovat -rozrobnykiv Web, jak to je nejčastější v multi-uživatelských systémů (webové stránky, portály, atd), když je systém provádění velkého počtu postupů Insert a aktualizace MySQL.
Přístup k databázím PHP-se provádí velmi často. Z tohoto důvodu dosažení maximálních marží, které jsou definovány jako auto_increment je velmi jednoduché a potíže při analýze důvody uvedené prostě nebude fungovat.
Z tohoto důvodu, vývojáři se doporučuje, aby pečlivě odpovídaly konstrukci pomocí na duplicitní klíč v aktualizaci příkaz mysql. vyberte - dotazů při přístupu na databázový server pracovat bez chyb, ale že přidávání nových záznamů do databáze je plná nepříjemných situací v budoucnosti vést k vážným problémům. Alternativně doporučuje pro avtoynkrementnyh pole nejprve zkontrolujte tyto položky, a pak držet je aktualizace.

Související publikace