Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 9362|Odpowiedź: 0

[Źródło] Żelazna reguła bazy MySQL

[Skopiuj link]
Opublikowano 10.10.2019 14:00:44 | | |
Dobra specyfikacja bazy danych pomaga zmniejszyć złożoność implementacji oprogramowania i obniżyć koszty komunikacji.

1. Żelazna zasada budowy magazynu

-
Prawo żelaza
Poziom
uwaga
Zestaw znaków
Użyj UTF-8. Jeśli emoji jest przechowywane, użyj utf8mb4 do przechowywania.
Zmuszony

Zasady sortowania
Użyj utf8_general_ci
Zmuszony

2. Żelazne prawo konstrukcji stołu

-
Prawo żelaza
Poziom
uwaga
egzegeza
Pamiętaj, aby mieć adnotacje polowe.
Zmuszony

kodować
Użyj UTF-8. Jeśli emoji jest przechowywane, użyj utf8mb4 do przechowywania.
Zmuszony

Czy dziedzina jest koncepcyjna
Musi być nazwany is_xx, a typ danych to nieznakomity tinyint(1 yes, 0 no), np. is_deleted(1 delete, 0 not deleted).
Zmuszony
Każde pole musi być nieoznaczone, jeśli nie jest ujemne
Nazwa tabeli, nazwa pola
Można używać tylko małych liter, podkreśleń lub cyfr; Nie wolno zaczynać od podkreślenia lub cyfry; Tylko liczby są zabronione między dwoma podkreśleniami; Wyłącz słowa zarezerwowane; Używanie rzeczowników w liczbie mnogiej jest zabronione w nazwach tabel.
Zmuszony

Nazwanie nazwy bazy danych i nazwy tabeli
Nazwa bazy danych powinna być zgodna z nazwą aplikacji, a nazwa tabeli powinna być nazwana jako Business Name_Role tabeli.
Zmuszony

Nazewnictwo indeksu
Indeks klucza podstawowego używa pk_ nazwy pola; Unikalny indeks z uk_ nazwą pola; Indeksy normalne używają idx_ nazw pól.
Zmuszony
pk_ jest tonacją podstawową; uk_ jest kluczem unikalnym; idx_ to indeks
Typ dziesiętny
Typ danych jest przesiętny, a stosowanie float i double jest zabronione, float i double mają utratę precyzji, a jeśli zakres przechowywanych danych przekracza zakres dziesiętny, zaleca się podzielenie danych na liczby całkowite i dziesiętne oraz ich osobne przechowywanie.
Zmuszony

Typ varchar
varchar to zmiennie długi ciąg znaków, nie przydziela się wcześniej miejsca na przechowywanie, długość nie powinna przekraczać 5000 znaków, jeśli długość przekracza 5000, należy zastosować tekst (utworzyć osobną tabelę, użyć klucza głównego do korespondencji, aby uniknąć wpływu na efektywność indeksowania innych pól).
Zmuszony

W nazwie tabeli muszą być trzy pola
ID (typ danych to bezznakowy bigint, pojedynczy przyrost tabeli, rozmiar kroku to 1), gmt_create, gmt_modified (aktywny czas tworzenia, pasywny czas aktualizacji, typ danych to datetime).
Zmuszony

Redundancja polowa
Pola pozwalają na odpowiednią redundancję, ale należy brać pod uwagę spójność danych, a pola redundantne powinny mieć 1) rzadkie modyfikacje; 2) To nie jest bardzo długie pole varchar, nie mówiąc już o polu tekstowym.
Rekomenduj

Podziel bazę danych i tabele
Partycjonowanie jest zalecane tylko wtedy, gdy liczba wierszy w jednej tabeli przekracza 5 milionów wierszy lub pojemność jednej tabeli przekracza 2 GB.
Rekomenduj


Ustawienie odpowiedniej długości pamięci znaków nie tylko oszczędza miejsce w tabelach bazy danych i indeksach, ale co ważniejsze, poprawia szybkość wyszukiwania.

3. Ustalenie indeksowego prawa żelaza

-
Prawo żelaza
Poziom
uwaga
Unikalny indeks
Pola o unikalnych cechach w biznesie, nawet jeśli są kombinacją pól, muszą być unikalnie indeksowane. Chociaż unikalny indeks wpływa na szybkość insertu, ta strata jest pomijalna, ale znacząco poprawia szybkość zapytań. Dodatkowo, nawet jeśli warstwa aplikacyjna ma bardzo pełną kontrolę kontrolną, o ile nie ma unikalnego indeksu, zgodnie z prawem Murphy'ego, nieuchronnie generowane będą brudne dane.
Zmuszony

dołącz
Więcej niż trzy tabele zabraniają łączenia pól, które wymagają łączenia i muszą być spójne; Gdy wiele tabel jest powiązanych z zapytaniami, upewnij się, że powiązane pola muszą mieć indeks. Nawet jeśli masz połączenie podwójnych tabel, zwracaj uwagę na indeksowanie tabel, wydajność SQL.
Zmuszony

Varcharfield
Długość indeksu musi być określona i nie ma potrzeby indeksowania wszystkich pól, wystarczy określić długość indeksu zgodnie z rzeczywistym rozróżnieniem tekstu. Długość indeksu i rozróżnienie to para sprzeczności, zazwyczaj dla danych typu ciągu indeksy o długości 20 mają stopień rozróżnienia powyżej 90%, który można określić na podstawie stopnia rozróżnienia (wyraźny lewy (nazwa kolumny, długość indeksu))/liczenia(*).
Zmuszony

Rozmycie jest zabronione podczas wyszukiwania stron
Wyszukiwanie stron zabrania rozmycia lub pełnego rozmycia, jeśli jest to konieczne, prosimy o wejście do wyszukiwarki, aby to rozwiązać. Powód zakazu: Plik indeksu ma właściwość dopasowania prefiksu po lewej stronie drzewa B, a jeśli wartość po lewej nie jest określona, ten indeks nie może być użyty.
Zmuszony

kolejność według
Jeśli jest kolejność według scenariusza, zwróć uwagę na uporządkowanie indeksu. Ostatnie pole kolejności przez jest częścią indeksu łączonego i umieszcza się na końcu kolejności kombinacji indeksów, aby uniknąć file_sort i wpłynąć na wydajność zapytań. Przykład: gdzie a=? i b=? kolejność według c; Indeks powinien być zbudowany jako a_b_c; Kontrprzykład: Jeśli w indeksie jest wyszukiwanie zakresu, to uporządkowanie indeksu nie może być wykorzystane, na przykład gdy a>10 jest w porządku b; Indeks a_b nie może być sortowany.
Rekomenduj

4. Napisz żelazne reguły SQL

-
Prawo żelaza
Poziom
uwaga
count(*)
Nie używaj count(nazwa kolumny) ani count(constant) zamiast count(*), która jest składnią standardowej liczby wierszy zdefiniowanej przez SQL92, niezależną od bazy danych i niezależną od NULL oraz non-NULL. count(*) liczy wiersze o wartości NULL, natomiast count(nazwa kolumny) nie liczy wierszy z tą kolumną NULL.
Zmuszony

Hrabia (wyraźny col)
Liczy liczbę unikalnych wierszy w kolumnie z wyjątkiem NULL. Zwróć uwagę, że count(różny col1, col2), jeśli jedna z kolumn jest NULL, zwraca 0, nawet jeśli druga kolumna ma inną wartość.
Zmuszony

sum(col)
Gdy wartości kolumny są wszystkie NULL, count(col) zwraca 0, ale sum(col) zwraca NULL, więc musisz być świadomy problemów z NPE przy użyciu sum(). Problemy NPE można uniknąć w następujący sposób: wybierz jeśli(isnull(sum(g)), 0, sum(g)) z tabeli;
Zmuszony

isnull
Użyj isnull(), aby określić, czy jest to wartość NULL. NULL to NULL w porównaniu do dowolnej wartości.
Zmuszony

Logika zapytań paginacji
Jeśli liczba wynosi 0, należy ją zwrócić bezpośrednio, aby uniknąć wykonania kolejnego zapowiedzenia paginacji.
Zmuszony

Zewnętrzne klucze i kaskady
Używanie kluczy obcych i kaskadowanie jest zabronione, a wszystkie koncepcje kluczy obcych muszą być rozwiązane na warstwie aplikacji. Powód: Obce klucze i kaskady nie nadają się do rozproszonych klastrów o wysokiej równobieżności, kaskadowe aktualizacje silnie blokują, istnieje ryzyko burz aktualizacji bazy danych, a klucze obce wpływają na szybkość wstawiania bazy danych.
Zmuszony

Procedury przechowywane
Procedury przechowywane są zabronione, a procedury przechowywane trudne do debugowania i skalowania, a także nie są przenośne.
Zmuszony

Korygowanie danych
Podczas poprawiania danych (szczególnie usuwania lub modyfikowania rekordów) wybierz najpierw tak, aby uniknąć przypadkowego usunięcia, i wykonaj polecenie update dopiero po potwierdzeniu jego poprawności.
Zmuszony

w
Jeśli nie da się tego uniknąć, liczba elementów po wciągnięciu powinna być kontrolowana w granicach 1000.
Rekomenduj

Tablica obcinania
Zakazuje się używania tablicy truncate, która jest szybsza niż delete i zużywa mniej zasobów systemowych i logowych, ale truncate jest wolna od transakcji i nie wywołuje wyzwalaczy, które mogą powodować awarie, dlatego nie używaj tego polecenia w kodzie deweloperskim.
odniesienie


5. Mapy żelaza ORM

-
Prawo żelaza
Poziom
uwaga
Zapytanie do tabeli
Lista pól, których używanie * do zapytań jest zabronione, musi być jasna, które pola są wymagane.
Zmuszony

POJO
Atrybut Boole'a klasy POJO nie może być dodawany do is, natomiast pole bazy danych musi być dodane do is, co wymaga mapowania między polami i atrybutami w resultMap.
Zmuszony

Parametry zwrotu
Zabronione jest używanie resultClass jako parametru zwrotu, nawet jeśli wszystkie nazwy atrybutów klas odpowiadają polom bazowym pojedynczo, muszą być definiowane; Każda tabela musi mieć odpowiedni atrybut. Powód: Konfiguruj relację mapowania, aby połączyła pole z klasą DO dla łatwej konserwacji.
Zmuszony

Parametry zwrotu
Zabronione jest bezpośrednie używanie HashMap i HashTable jako wyjścia zbioru wyników zapytań. Powód: Typ wartości atrybutu jest nie do kontrolowania.
Zmuszony

sql.xml Konfiguruj parametry
sql.xml Używaj #{}, #param# do parametrów konfiguracyjnych i nie używaj ${}, ponieważ ${} jest podatny na wstrzykiwanie SQL.
Zmuszony

queryForList
Używanie queryForList (String statementName, int start, int size) dołączonego do Mybatis jest zabronione. Powód: Jest realizowany poprzez pobranie wszystkich rekordów instrukcji SQL odpowiadających statementName w bazie danych, a następnie użycie podlisty do uzyskania podzbioru rozmiaru start, .
Zmuszony

Czas aktualizacji
Podczas aktualizacji rekordu tabeli bazy danych należy jednocześnie zaktualizować czas modyfikacji rekordu.
Zmuszony

Zaktualizuj rekordy tabel bazy danych
Nie pisz dużego i pełnego interfejsu aktualizacji danych (przekazanego jako klasa POJO). Podczas wykonywania SQL nie aktualizuj niezmienionych pól ze względu na podatne na błędy, nieefektywność i zwiększone miejsce przechowywania binlogów.
Rekomenduj

@Transactional
@Transactional Nie nadużywaj transakcji. Transakcje wpływają na QPS bazy danych. Dodatkowo, gdy używasz transakcji, musisz brać pod uwagę różne aspekty schematów rollback, w tym cofnięcie pamięci podręcznej, rollback w wyszukiwarkach, kompensację wiadomości, korektę statystyczną itd.
odniesienie

Mybatis dynamic sql tags
< compareValue w isEqual> jest stałą względem wartości atrybutu, zwykle liczbą, co oznacza, że odpowiadające polecenie SQL jest wykonywane przy równości; < isNotEmpty> oznacza, że jest wykonywany, gdy nie jest empty i nie jest null; < isNotNull> oznacza, że jest wykonywany, gdy nie jest null.
odniesienie








Poprzedni:Mapa operacji SEO jest pierwszą w całej sieci, zbiorem ultrakompletnych map operacji w wysokiej rozdzielczości Internetu
Następny:[Earth Science] DK Children's Encyclopedia Wysokiej jakości encyklopedia z Wielkiej Brytanii...
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com