Zespół aktualizacji DML "Podwodne kamienie" dla MySQL

Każdy programista, który musiał pracować z bazami danych napotkał operatorów DML (język manipulacji danymi), takich jak Wybierz, Wstaw, Usuń i Aktualizuj. Środowisko MySQL wykorzystuje również wszystkie powyższe polecenia w swoim arsenale. Operatorzy ci logicznie mówią o swoim celu - wyborze rekordów, wprowadzeniu nowych wartości, aktualizacji istniejących danych, pełnym lub zgodnie z określonymi warunkami, usunięciu informacji w bazie danych. Treningowe materiały teoretyczne szczegółowo opisują zasadę pracy każdego zespołu i jego składnię, ale nie można znaleźć wzmianki o trudnościach, które mogą pojawić się w praktyce podczas użytkowania. Materiał ten będzie poświęcony rozważaniu niektórych z nich.


Krótko o operatorach DML (Insert)

Zanim przejdziemy dalej, konieczne jest ponowne przypomnienie szczegółów dotyczących celu każdej funkcji. Będziemy bardziej zainteresowani dwoma operatorami: Insert and Update, ponieważ są to główne trudności w przetwarzaniu dużych ilości danych.
Zacznij od polecenia Wstaw, a następnie płynnie przejdź do Aktualizacji. MySQL, podobnie jak każdy inny nowoczesny system DBMS, wykorzystuje operację wstawiania do dodawania nowych wpisów do istniejących tabel bazy danych. Składnia operacji jest bardzo prosta i zrozumiała. Zawiera listę pól, w których zostanie wprowadzona wartość, miejsce docelowe - nazwa tabeli - oraz listę danych wprowadzonych bezpośrednio. Za każdym razem, gdy wykonywane jest polecenie Wstaw, baza danych będzieuzupełnione o nowe wartości.


Operator aktualizacji

Jednak w praktyce często występują sytuacje, w których niektóre zbiory danych wymagają aktualizacji do jednej lub więcej wartości atrybutów. Jako przykład można przytoczyć sytuację, w której firma przechodzi reformację, a następnie zmienia nazwy głównych departamentów. W takim przypadku musisz wprowadzić zmiany dla każdego działu. Jeśli zmieni się tylko nazwa, problem zostanie rozwiązany bardzo szybko. Ale jeśli kodowanie każdego komponentu całej produkcji, który zwykle służy jako klucz podstawowy, zmienia się, to z kolei powoduje zmiany w informacji i na każdym pracowniku.
Do rozwiązania tego problemu można użyć aktualizacji operatora DML. MySQL jest serwerem działającym z dużą liczbą rekordów, za pomocą operatora aktualizacji wykona wymagane zapytanie i rozwiąże problem. Ale czasami podczas aktualizacji nie są zrozumiałe i trudne do zrozumienia komplikacje. Chodzi o trudność aktualizacji zapisów, język będzie trwał.

Co jest powiedziane w teorii

Polecenie Update, jak wspomniano powyżej, służy do aktualizacji istniejących wpisów w tabeli. Jednak w praktyce klienci, którzy uzyskują dostęp do serwerów baz danych, nie zawsze wiedzą, czy istnieje określony zestaw danych w tabelach, czy nie. Wstępna kontrola dostępności danych w bazie danych w celu dalszego odświeżenia prowadzi do kosztów czasu i marnowania możliwości serwera. Aby temu zapobiec, DBMS ma specjalną konstrukcję MySQL - Insert * Update, inktóre można wstawiać lub aktualizować niezależnie od siebie. Oznacza to, że jeśli w tabeli pojawi się rekord dotyczący określonego warunku, nastąpi aktualizacja. Jeśli dane w tym stanie nie zostaną znalezione, serwer MySQL będzie mógł wypełnić żądanie danych.

Aktualizacja danych w obecności duplikatów

Ważnym elementem takich Wstaw - żądań w systemie zarządzania bazą danych MySQL - przedrostek "Na duplikacie aktualizacji klucza". Pełna składnia zapytania wygląda następująco: "wstaw do wartości test_table (employer_id, name) (1'Abramov") jest zduplikowaną aktualizacją klucza last_modified = NOW (); »
Taki wniosek może być wykorzystywany do rejestrowania działań pracowników, na przykład określania czasu przecięcia się przedsiębiorstwa tranzytowego z późniejszym obliczaniem czasu przerwy i wykrywaniem opóźnień. Aby nie uwzględnić kilku rekordów w tabeli, wystarczy, aby każdy pracownik utrzymywał konto z ciągłą aktualizacją. Jest to projekt duplikatu, który pozwala to zrobić.

Właściwie o problemach

Biorąc pod uwagę powyższy przykład rejestrowania działań pracowników w pasażu, jako problem, możemy użyć pól auto_ increment, które są powszechnie używane do wypełnienia wartości kluczy podstawowych (primary _ key). Podczas korzystania z polecenia MySQL Update w konstrukcie z Insert auto_ increment, pola są stale powiększane. Podobnie, wszystko dzieje się, gdy używany jest zamienny projekt, jeśli wykryte zostaną duplikaty. Wartość "Auto-inkrementalna" rośnie nawet wtedy, gdy nie jest potrzebna. Z tego powodu są problemy z przepustkąwartości lub przekroczenie zakresu, co w przyszłości prowadzi do zakłóceń w działaniu systemów zarządzania bazami danych.

Największe prawdopodobieństwo wystąpienia problemu

Problem powinien być rozpatrywany przez twórców stron internetowych, ponieważ jest on najczęściej wykorzystywany w systemach wieloużytkownikowych (strony internetowe, portale itp.), Gdy system wykonuje dużą liczbę procedur Insert and Update MySQL.
Dostęp do bazy danych-jest często wykonywany. Dlatego osiągnięcie maksymalnych wartości pól, spowodowanych przez auto_increment, jest szybkie i podczas analizy trudności nie jest możliwe natychmiastowe określenie przyczyn.
Dlatego zaleca się, aby programiści ostrożnie podchodzili do korzystania z projektu duplikatów kluczy w komendzie aktualizacji mysql. select - żądania dostępu do serwera bazy danych działają bezbłędnie, ale dodanie nowych wpisów do bazy danych jest zagrożone nieprzyjemnymi sytuacjami, co dodatkowo prowadzi do poważnych problemów. Jako alternatywę zaleca się, aby w polach auto-inkrementacji najpierw sprawdzić dostępność rekordów, a następnie je zaktualizować.

Powiązane publikacje