Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 9362|Odpověď: 0

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

[Kopírovat odkaz]
Zveřejněno 10.10.2019 14:00:44 | | |
Dobrá specifikace databáze pomáhá snížit složitost softwarové implementace a snížit náklady na komunikaci.

1. Železný zákon při stavbě skladu

-
Železný zákon
Úroveň
poznámka
Sada znaků
Použijte UTF-8. Pokud je emoji uložený, použijte utf8mb4 pro uložení.
Nucený

Pravidla třídění
Použijte utf8_general_ci
Nucený

2. Železný zákon konstrukce stolů

-
Železný zákon
Úroveň
poznámka
exegeze
Nezapomeňte mít terénní poznámky.
Nucený

zakódovat
Použijte UTF-8. Pokud je emoji uložený, použijte utf8mb4 pro uložení.
Nucený

zda je obor konceptuální
Musí být pojmenován is_xx a datový typ je nepodepsaný tinyint(1 ano, 0 ne), např. is_deleted(1 smazat, 0 nesmazáno).
Nucený
Každé pole musí být bez znaménka, pokud není záporné
Název tabulky, název pole
Lze použít pouze malá písmena, podtržítka nebo čísla; Je zakázáno začínat podtržením nebo číslem; Pouze čísla jsou zakázána mezi dvěma podtržítky; Vypnout vyhrazená slova; Používání množných podstatných jmen je v názvech tabulek zakázáno.
Nucený

Pojmenování názvu databáze a názvu tabulky
Název databáze by měl být konzistentní s názvem aplikace a název tabulky by měl být pojmenován jako Business Name_Role tabulky.
Nucený

Pojmenování indexu
Primární klíčový index používá pk_ název pole; Unikátní index s uk_ názvem pole; Normální indexy používají idx_ názvy polí.
Nucený
pk_ je hlavní tónina; uk_ je jedinečný klíč; idx_ je index
Desetinný typ
Typ dat je desetinný a použití float a double je zakázáno, float a double mají ztrátu přesnosti, a pokud uložený rozsah dat přesahuje rozsah desetinných čísel, doporučuje se data rozdělit na celá a desetinná čísla a uložit je samostatně.
Nucený

Varchar typ
varchar je proměnný dlouhý řetězec, předem není vyhrazeno žádné místo pro uložení, délka by neměla přesáhnout 5000 znaků, pokud je délka větší než 5000, použijte text (vytvořte samostatnou tabulku, použijte primární klíč k odpovídání, aby se zabránilo ovlivnění efektivity indexování jiných polí).
Nucený

V názvu tabulky musí být tři pole
ID (datový typ je neposigned bigint, přírůstek jedné tabulky, velikost kroku 1), gmt_create, gmt_modified (aktivní čas vytvoření, pasivní aktualizace, datový typ je datetime).
Nucený

Záloha v terénu
Pole umožňují odpovídající redundanci, ale je třeba zohlednit konzistenci dat a redundantní pole by měla mít 1) vzácné úpravy; 2) Ne varcharovo super dlouhé pole, natož textové pole.
doporučovat

Rozdělte databázi a tabulky
Rozdělení na části se doporučuje pouze tehdy, když počet řádků v jedné tabulce přesahuje 5 milionů řádků nebo kapacita jedné tabulky přesahuje 2 GB.
doporučovat


Nastavení správné délky paměti znaků nejen šetří místo v databázových tabulkách a indexech, ale co je důležitější, zlepšuje rychlost vyhledávání.

3. Stanovte indexový železný zákon

-
Železný zákon
Úroveň
poznámka
Unikátní index
Pole s jedinečnými charakteristikami v podnikání, i když jsou kombinací polí, musí být jednoznačně indexována. Ačkoli jedinečný index ovlivňuje rychlost vložení, tato ztráta je zanedbatelná, ale výrazně zlepšuje rychlost dotazů. Navíc, i když má aplikační vrstva velmi kompletní kontrolu kontrol, pokud podle Murphyho zákona neexistuje unikátní index, nevyhnutelně budou generována špinavá data.
Nucený

join
Více než tři tabulky zakazují spojování, pole vyžadují spojení a datové typy musí být konzistentní; Pokud je k dotazům přiřazeno více tabulek, ujistěte se, že příslušná pole musí mít index. I když máte dvojité tabulkové spojení, věnujte pozornost indexování tabulek a výkonu SQL.
Nucený

Varcharfield
Délka indexu musí být specifikována a není třeba indexovat všechna pole, stačí určit délku indexu podle skutečného rozlišení textu. Délka indexu a rozlišení jsou dvojice rozporů, obecně u dat typu řetězce mají indexy s délkou 20 stupeň rozlišení více než 90 %, což lze určit rozlišením počtu (odlišný levý (název sloupce, délka indexu))/početí(*).
Nucený

Rozmazání je při vyhledávání na stránce zakázáno
Vyhledávání na stránce zakazuje rozmazání nebo úplné rozmazání, pokud je to nutné, navštivte vyhledávač, abyste to vyřešili. Důvod zákazu: Indexový soubor má vlastnost shody nejlevější předpony B-stromu, a pokud není určena hodnota vlevo, tento index nelze použít.
Nucený

pořadí podle
Pokud je pořadí podle scénáře, věnujte pozornost uspořádanosti indexu. Poslední pole pořadí podle je součástí kombinovaného indexu a je umístěno na konec pořadí kombinací indexů, aby se předešlo file_sort a ovlivnilo výkon dotazu. Příklad: kde a=? a b=? pořadí podle c; Index by měl být sestaven jako a_b_c; Protipříklad: Pokud je v indexu vyhledávání v rozsahu, nelze indexovou uspořádanost využít, například kde a>10 je pořadeno podle b; Indexové a_b nelze seřadit.
doporučovat

4. Napište SQL železná pravidla

-
Železný zákon
Úroveň
poznámka
count(*)
Nepoužívejte count(název sloupce) nebo count(constant) místo count(*), což je syntaxe pro standardní počet řádků definovaný SQL92, nezávislou na databázi a nezávislou na NULL a non-NULL. count(*) počítá řádky s hodnotou NULL, zatímco count(název sloupce) nepočítá řádky s tímto sloupcem NULL.
Nucený

Hrabě(distinct col)
Počítá počet unikátních řádků ve sloupci kromě NULL. Všimněte si, že count(odlišný sloupec1, sloupec2), pokud je jeden ze sloupců celý NULL, vrátí 0, i když druhý sloupec má jinou hodnotu.
Nucený

sum(col)
Když jsou hodnoty sloupce všechny NULL, count(col) vrátí 0, ale sum(col) vrátí NULL, takže je třeba být při použití sum() opatrný s NPE problémy. NPE problémy lze vyhnout následujícími způsoby: vyberte if(isnull(sum(g)), 0, sum(g)) z tabulky;
Nucený

isnull
Použijte isnull() k určení, zda je to hodnota NULL. NULL je NULL ve srovnání s jakoukoli hodnotou.
Nucený

Logika stránkování dotazů
Pokud je počet 0, měl by být vrácen přímo, aby se předešlo vykonání následného příkazu stránkování.
Nucený

Vnější klíče a kaskády
Používání cizích klíčů a kaskádování je zakázáno a všechny koncepty cizích klíčů musí být vyřešeny na aplikační vrstvě. Důvod: Cizí klíče a kaskády nejsou vhodné pro distribuované clustery s vysokou souběžností, kaskádové aktualizace jsou silným blokováním, hrozí riziko bouří v databázi a cizí klíče ovlivňují rychlost vkládání databáze.
Nucený

Uložené procedury
Uložené procedury jsou zakázány, uložené procedury se obtížně ladí a škálují a nejsou přenosné.
Nucený

Korekce dat
Při opravě dat (zejména mazání nebo úpravě záznamů) nejprve vyberte tak, abyste předešli nechtěnému mazání, a příkaz update sprovedte až po potvrzení, že je správný.
Nucený

v
Pokud se tomu nelze vyhnout, měl by být počet prvků po vstupu kontrolován do 1000.
doporučovat

Tabulka zkrácení
Je zakázáno používat tabulku zkrácení, která je rychlejší než mazání a spotřebovává méně systémových a logovacích zdrojů, ale zkracování je bez transakcí a nespouští spouštěče, které by mohly způsobit nehody, proto tento příkaz v kódu vývoje nepoužívajte.
odkaz


5. ORM mapuje železné zákony

-
Železný zákon
Úroveň
poznámka
Dotaz na tabulku
Seznam polí, která jsou pro dotazy zakázána používat * pro dotazy, musí být jasný, která pole jsou povinná.
Nucený

POJO
Booleovský atribut třídy POJO nelze přidat k is, zatímco pole databáze musí být přidáno k is, což vyžaduje mapování mezi poli a atributy ve resultMap.
Nucený

Parametry návratu
Je zakázáno používat resultClass jako návratový parametr, i když všechny názvy atributů tříd odpovídají databázovým polům jednotlivě, musí být definovány; Každá tabulka musí mít atribut, který jí odpovídá. Důvod: Nastavte mapovací vztah tak, aby pole bylo spojeno s třídou DO pro snadnou údržbu.
Nucený

Parametry návratu
Je zakázáno přímo používat HashMap a HashTable jako výstup z výsledkové sady dotazů. Důvod: Typ hodnoty atributu je nekontrolovatelný.
Nucený

sql.xml Nastavit parametry
sql.xml Pro konfigurační parametry použijte #{}, #param# a nepoužívejte ${}, protože ${} je náchylný k SQL injekci.
Nucený

queryForList
Použití queryForList (String statementName, int start, int size), které je součástí Mybatis, je zakázáno. Důvod: Implementuje se tak, že se v databázi získávají všechny záznamy SQL příkazu odpovídajícího názvu a poté se pomocí podseznamu získá podmnožina velikosti start.
Nucený

Čas aktualizace
Při aktualizaci záznamu databázové tabulky musíte současně aktualizovat čas úpravy záznamu.
Nucený

Aktualizujte záznamy databázových tabulek
Nepište velké a kompletní rozhraní pro aktualizaci dat (předáno jako třída POJO). Při spouštění SQL neaktualizujte nezměněná pole kvůli chybovým, neefektivním a zvýšeným binlogovým úložištím.
doporučovat

@Transactional
@Transactional Nezneužívajte transakce. Transakce ovlivňují QPS databáze. Kromě toho, kde používáte transakce, musíte zohlednit různé aspekty rollback schémat, včetně cache rollback, rollback ve vyhledávačích, kompenzace zpráv, statistické korekce atd.
odkaz

Mybatis dynamic sql tags
< compareValue v isEqual> je konstanta oproti hodnotě atributu, obvykle číslo, což znamená, že odpovídající SQL příkaz se vykoná, když je stejný; < isNotEmpty> znamená, že je vykonán, když není prázdný a není null; < isNotNull> znamená, že je vykonána, když není null.
odkaz








Předchozí:SEO operační mapa je první v celé síti, sbírka ultra-kompletních internetových mapových operací ve vysokém rozlišení
Další:[Earth Science] DK Children's Encyclopedia Vysoce kvalitní encyklopedie z Velké Británie...
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com