Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9362|Odpoveď: 0

[Zdroj] MySQL databázové železné pravidlo

[Kopírovať odkaz]
Zverejnené 10. 10. 2019 14:00:44 | | |
Dobrá špecifikácia databázy pomáha znižovať zložitosť implementácie softvéru a náklady na komunikáciu.

1. Železný zákon výstavby skladu

-
Železný zákon
Úroveň
poznámka
Sada znakov
Použi UTF-8. Ak je emoji uložený, použite utf8mb4 na uloženie.
Nútený

Pravidlá triedenia
Použi utf8_general_ci
Nútený

2. Železný zákon konštrukcie stola

-
Železný zákon
Úroveň
poznámka
Exegéza
Nezabudnite mať terénne poznámky.
Nútený

kódovať
Použi UTF-8. Ak je emoji uložený, použite utf8mb4 na uloženie.
Nútený

či je odbor konceptuálny
Musí byť pomenovaný is_xx a dátový typ je nepodpísaný tinyint(1 áno, 0 nie), napr. is_deleted(1 delete, 0 not deleted).
Nútený
Každé pole musí byť bez znamienka, ak nie je záporné
Názov tabuľky, názov poľa
Môžu sa používať iba malé písmená, podčiarknutia alebo čísla; Je zakázané začínať podčiarknutím alebo číslom; Iba čísla sú zakázané medzi dvoma podčiarknutiami; Vypnúť rezervované slová; Používanie množných podstatných mien je v názvoch tabuliek zakázané.
Nútený

Pomenovanie názvu databázy a názvu tabuľky
Názov databázy by mal byť v súlade s názvom aplikácie a názov tabuľky by mal byť pomenovaný ako Business Name_Role tabuľky.
Nútený

Pomenovanie indexu
Primárny kľúčový index používa pk_ názov poľa; Jedinečný index s uk_ názvom poľa; Bežné indexy používajú idx_ názvy polí.
Nútený
pk_ je primárna tónina; uk_ je jedinečný kľúč; idx_ je index
Desatinný typ
Dátový typ je desatinný a používanie float a double je zakázané, float a double majú stratu presnosti, a ak uložený rozsah dát presahuje rozsah desatinných čísel, odporúča sa rozdeliť údaje na celé a desatinné čísla a uložiť ich samostatne.
Nútený

Varchar typ
Varchar je variabilný dlhý reťazec, vopred nie je pridelený žiadny úložný priestor, dĺžka by nemala presiahnuť 5000 znakov, ak je dĺžka väčšia ako 5000, použite text (vytvorte samostatnú tabuľku, použite primárny kľúč na korešpondenciu, aby ste neovplyvnili efektivitu indexovania iných polí).
Nútený

V názve tabuľky musia byť tri polia
ID (dátový typ je neznamienkový bigint, prírastok jednej tabuľky, veľkosť kroku je 1), gmt_create, gmt_modified (aktívny čas vytvorenia, pasívny čas aktualizácie, typ dáta je dátum čas).
Nútený

Redundancia v teréne
Polia umožňujú primeranú redundanciu, ale je potrebné zohľadniť konzistenciu dát a redundantné polia by mali mať 1) zriedkavé úpravy; 2) Nie veľmi dlhé pole, nieto ešte textové pole.
odporúčať

Rozdeľte databázu a tabuľky
Rozdelenie sa odporúča len vtedy, keď počet riadkov v jednej tabuľke presahuje 5 miliónov riadkov alebo kapacita jednej tabuľky presahuje 2 GB.
odporúčať


Nastavenie vhodnej dĺžky ukladania znakov nielenže šetrí miesto v databázových tabuľkách a indexoch, ale čo je dôležitejšie, zlepšuje rýchlosť vyhľadávania.

3. Stanoviť indexový železný zákon

-
Železný zákon
Úroveň
poznámka
Jedinečný index
Oblasti s jedinečnými charakteristikami v podnikaní, aj keď sú kombináciou polí, musia byť jednoznačne indexované. Hoci jedinečný index ovplyvňuje rýchlosť vkladania, táto strata je zanedbateľná, no výrazne zlepšuje rýchlosť dotazovania. Navyše, aj keď má aplikačná vrstva veľmi kompletnú kontrolu kontroly, pokiaľ neexistuje jedinečný index, podľa Murphyho zákona sa nevyhnutne generujú špinavé dáta.
Nútený

Pridajte sa
Viac ako tri tabuľky zakazujú spojenie, polia, ktoré vyžadujú spojenie, a dátové typy musia byť konzistentné; Keď je s dotazmi spojených viacero tabuliek, uistite sa, že príslušné polia musia mať index. Aj keď máte dvojité spájanie tabuliek, venujte pozornosť indexovaniu tabuliek, výkonu SQL.
Nútený

Varcharfield
Dĺžka indexu musí byť špecifikovaná a nie je potrebné indexovať všetky polia, stačí určiť dĺžku indexu podľa skutočného rozlíšenia textu. Dĺžka indexu a rozlíšenie sú dvojica protirečení, vo všeobecnosti pri dátach typu reťazca budú mať indexy s dĺžkou 20 stupeň rozlíšenia viac ako 90 %, ktorý možno určiť podľa rozlišovacieho stupňa počtu(distinct left(názov stĺpca, indexová dĺžka))/count(*).
Nútený

Rozmazanie je pri vyhľadávaní stránok zakázané
Vyhľadávanie stránok zakazuje rozmazanie alebo úplné rozmazanie, ak je to potrebné, prosím, choďte na vyhľadávač a vyriešite to. Dôvod zákazu: Indexový súbor má vlastnosť zhody najľavšej predpony B-stromu, a ak hodnota naľavo nie je určená, tento index sa nedá použiť.
Nútený

poradie podľa
Ak existuje poradie podľa scenára, venujte pozornosť usporiadanosti indexu. Posledné pole poradia je súčasťou kombinovaného indexu a je umiestnené na konci poradia kombinácií indexov, aby sa predišlo file_sort a ovplyvnilo výkon dotazu. Príklad: kde a=? a b=? poradie podľa c; Index by mal byť zostavený ako a_b_c; Protipríklad: Ak je v indexe vyhľadávanie v rozsahu, potom nemožno využiť usporiadanosť indexu, napríklad kde a>10 je poradie podľa b; Indexové a_b nie je možné zoradiť.
odporúčať

4. Napíšte SQL železné pravidlá

-
Železný zákon
Úroveň
poznámka
count(*)
Nepoužívajte count(column name) alebo count(constant) namiesto count(*), čo je syntax pre štandardný počet riadkov definovaný SQL92, nezávislý od databázy a nezávislý od NULL a non-NULL. count(*) počíta riadky s hodnotou NULL, zatiaľ čo count(názov stĺpca) nepočíta riadky s týmto stĺpcom NULL.
Nútený

gróf (odlišný col)
Počíta počet unikátnych riadkov v stĺpci okrem NULL. Všimnite si, že count(distinct col1, col2), ak je jeden zo stĺpcov NULL, vráti 0, aj keď druhý stĺpec má inú hodnotu.
Nútený

sum(col)
Keď sú hodnoty stĺpca všetky NULL, count(col) vráti 0, ale sum(col) vráti NULL, takže je potrebné dávať pozor na problémy s NPE pri použití sum(). NPE problémy sa dajú vyhnúť nasledujúcimi spôsobmi: vyberte if(isnull(sum(g)), 0, sum(g)) z tabuľky;
Nútený

isnull
Použite isnull() na určenie, či je to hodnota NULL. NULL je NULL v porovnaní s akoukoľvek hodnotou.
Nútený

Logika stránkovania dotazov
Ak je počet 0, mal by byť vrátený priamo, aby sa predišlo vykonaniu následného stránkovacieho príkazu.
Nútený

Vonkajšie kľúče a kaskády
Používanie cudzích kľúčov a kaskádovanie je zakázané a všetky koncepty cudzích kľúčov musia byť vyriešené na aplikačnej vrstve. Dôvod: Cudzie kľúče a kaskády nie sú vhodné pre distribuované klastre s vysokou súbežnosťou, kaskádové aktualizácie sú silným blokovaním, hrozí riziko búrok aktualizácií databázy a cudzie kľúče ovplyvňujú rýchlosť vkladania databázy.
Nútený

Uložené procedúry
Uložené procedúry sú zakázané a uložené procedúry sa ťažko ladia a škálujú, a nie sú prenosné.
Nútený

Korekcia dát
Pri oprave dát (najmä pri mazaní alebo úprave záznamov) vyberte ako prvú, aby ste sa vyhli náhodnému vymazaniu, a vykonajte update príkaz až po potvrdení jeho správnosti.
Nútený

v
Ak sa tomu nedá vyhnúť, počet prvkov po vstupe by mal byť kontrolovaný do 1000.
odporúčať

Tabuľka orezania
Je zakázané používať truncate table, ktorá je rýchlejšia ako delete a spotrebuje menej systémových a logovacích zdrojov, ale trunkate je bez transakcií a nespúšťa triggery, ktoré môžu spôsobiť nehody, preto tento príkaz nepoužívajte vo vývojovom kóde.
referencia


5. ORM mapuje železné zákony

-
Železný zákon
Úroveň
poznámka
Dotaz na tabuľku
Zoznam polí, ktoré je zakázané používať * pre dotazy, musí byť jasný, ktoré polia sú potrebné.
Nútený

POJO
Booleov atribút triedy POJO nemožno pridať k is, zatiaľ čo databázové pole musí byť pridané do is, čo vyžaduje mapovanie medzi poliami a atribútmi vo resultMap.
Nútený

Návratové parametre
Je zakázané používať resultClass ako návratový parameter, aj keď všetky názvy atribútov triedy zodpovedajú databázovým poliam jedno po druhom, musia byť definované; Každá tabuľka musí mať svoj atribút, ktorý jej zodpovedá. Dôvod: Nastavte mapovací vzťah tak, aby ste spojili pole s triedou DO pre jednoduchú údržbu.
Nútený

Návratové parametre
Je zakázané priamo používať HashMap a HashTable ako výstup výsledkovej množiny dotazov. Dôvod: Typ hodnoty atribútu je nekontrolovateľný.
Nútený

sql.xml Nastaviť parametre
sql.xml Používajte #{}, #param# pre konfiguračné parametre a nepoužívajte ${}, pretože ${} je náchylný na SQL injection.
Nútený

queryForList
Použitie queryForList (String statementName, int start, int size), ktoré je súčasťou Mybatis, je zakázané. Dôvod: Implementuje sa tak, že sa získajú všetky záznamy SQL príkazu zodpovedajúce statementName v databáze a potom sa pomocou podzoznamu získa podmnožina veľkosti štart.
Nútený

Čas aktualizácie
Pri aktualizácii záznamu databázovej tabuľky musíte zároveň aktualizovať čas úpravy záznamu.
Nútený

Aktualizujte záznamy databázových tabuliek
Nepíšte veľké a kompletné rozhranie na aktualizáciu dát (odovzdávané ako trieda POJO). Pri vykonávaní SQL neaktualizujte nezmenené polia kvôli chybovým, neefektívnym a zvýšeným binlogovým úložiskám.
odporúčať

@Transactional
@Transactional Nezneužívajte transakcie. Transakcie ovplyvňujú QPS databázy. Okrem toho, kde používate transakcie, musíte zohľadniť rôzne aspekty rollback schém, vrátane cache rollback, rollback vo vyhľadávačoch, kompenzácie správ, štatistickej korekcie a podobne.
referencia

Mybatis dynamic sql tagy
< compareValue v isEqual> je konštanta v porovnaní s hodnotou atribútu, zvyčajne číslo, čo znamená, že príslušný SQL príkaz sa vykoná, keď je rovnaký; < isNotEmpty> znamená, že sa vykonáva, keď nie je prázdny a nie je null; < isNotNull> znamená, že sa vykoná, keď nie je null.
referencia








Predchádzajúci:SEO operačná mapa je prvá v celej sieti, zbierka ultra-kompletných internetových vysokodefiničných operačných máp
Budúci:[Earth Science] DK Children's Encyclopedia Kvalitná encyklopédia z Veľkej Británie...
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com