Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 9362|Odgovoriti: 0

[Vir] Železno pravilo MySQL baze podatkov

[Kopiraj povezavo]
Objavljeno na 10. 10. 2019 14:00:44 | | |
Dobra specifikacija podatkovne baze pomaga zmanjšati kompleksnost implementacije programske opreme in znižati stroške komunikacije.

1. Železni zakon gradnje skladišča

-
Železni zakon
Raven
Pripombo
Nabor znakov
Uporabi UTF-8. Če je emoji shranjen, uporabite utf8mb4 za shranjevanje.
prisiljeno

Pravila razvrščanja
Uporabi utf8_general_ci
prisiljeno

2. Železni zakon konstrukcije miz

-
Železni zakon
Raven
Pripombo
Exegesis
Poskrbite, da boste imeli terenske opombe.
prisiljeno

kodirati
Uporabi UTF-8. Če je emoji shranjen, uporabite utf8mb4 za shranjevanje.
prisiljeno

Ali je področje konceptualno
Mora biti poimenovan z is_xx, podatkovni tip pa je nepredznaven tinyint(1 da, 0 ne), npr. is_deleted(1 izbriši, 0 ni izbrisano).
prisiljeno
Vsako polje mora biti brez znaka, če ni negativno
Ime tabele, ime polja
Uporabljajo se lahko le male črke, podčrte ali številke; Prepovedano je začeti s podčrtavanjem ali številko; Med dvema podčrtama so dovoljene le številke; Onemogoči rezervirane besede; Uporaba množinskih samostalnikov je v imenih tabel prepovedana.
prisiljeno

Poimenovanje imena baze podatkov in imena tabele
Ime baze podatkov naj bo skladno z imenom aplikacije, ime tabele pa naj bo poimenovano s poslovnim Name_Role tabele.
prisiljeno

Poimenovanje indeksa
Indeks primarnega ključa uporablja pk_ ime polja; Edinstven indeks z uk_ imenom polja; Običajni indeksi uporabljajo idx_ imena polj.
prisiljeno
pk_ je primarni tonalitet; uk_ je edinstven ključ; idx_ je indeks
Decimalni tip
Tip podatkov je decimalen, uporaba float in double je prepovedana, float in double pa imata izgubo natančnosti, če pa shranjeni razpon podatkov presega decimalni razpon, je priporočljivo podatke razdeliti na cela števila in decimalke ter jih shraniti ločeno.
prisiljeno

Varchar tip
varchar je spremenljiv dolg niz, vnaprej ni dodeljenega prostora za shranjevanje, dolžina ne sme presegati 5000 znakov, če je dolžina večja od 5000, uporabite besedilo (ustvarite ločeno tabelo, uporabite primarni ključ za usklajevanje, da se ne vpliva na učinkovitost indeksiranja drugih polja).
prisiljeno

V imenu tabele morajo biti tri polja
ID (podatkovni tip je Bigint brez predznaka, posamezna tabela inkrement, velikost koraka je 1), gmt_create, gmt_modified (aktivni čas ustvarjanja, pasivni čas posodobitve, podatkovni tip je datetime).
prisiljeno

Poljska redundanca
Polja omogočajo ustrezno redundanco, vendar je treba upoštevati konsistentnost podatkov, redundantna polja pa naj imajo 1) redke spremembe; 2) Ne varcharjevo zelo dolgo polje, kaj šele besedilno polje.
priporočiti

Razdelite bazo podatkov in tabele
Razdeljevanje je priporočljivo le, kadar število vrstic v eni tabeli presega 5 milijonov vrstic ali kapaciteta ene tabele presega 2 GB.
priporočiti


Nastavitev ustrezne dolžine shranjevanja znakov ne le prihrani prostor v tabeli baze podatkov in indekse, ampak kar je še pomembneje, izboljša hitrost pridobivanja znakov.

3. Vzpostavite indeksni železni zakon

-
Železni zakon
Raven
Pripombo
Unikatni indeks
Področja z edinstvenimi značilnostmi v podjetju, tudi če so kombinacija področij, morajo biti edinstveno indeksirana. Čeprav edinstven indeks vpliva na hitrost vstavljanja, je ta izguba zanemarljiva, vendar bistveno izboljša hitrost poizvedb. Poleg tega, tudi če ima aplikacijska plast zelo popoln nadzor nad preverjanjem, dokler ni edinstvenega indeksa, se po Murphyjevem zakonu neizogibno generirajo umazani podatki.
prisiljeno

pridruži se
Več kot tri tabele preprečujejo združevanje, polja, ki zahtevajo združevanje, in podatkovni tipi morajo biti dosledni; Ko je več tabel povezanih s poizvedbami, poskrbite, da morajo imeti pripadajoča polja indeks. Tudi če imate dvojno združevanje tabel, bodite pozorni na indeksiranje tabel in zmogljivost SQL.
prisiljeno

Varcharfield
Dolžino indeksa je treba določiti, ni pa treba indeksirati vseh polj, temveč določiti dolžino indeksa glede na dejansko razliko med besedilom. Dolžina indeksa in razlikovanje sta par protislovij; pri podatkih o tipu niza bodo indeksi z dolžino 20 imeli stopnjo razlikovanja več kot 90 %, ki jo lahko določimo z razlikovalno stopnjo števila (jasno levo (ime stolpca, dolžina indeksa))/števila(*).
prisiljeno

Zameglitev je pri iskanju po strani prepovedana
Iskanje po straneh prepoveduje zamegljevanje ali popolno zamegljenost, če je potrebno, pojdite na iskalnik in to rešite. Razlog prepovedi: Indeksna datoteka ima lastnost ujemanja predpone na levi strani B-drevesa, in če vrednost na levi ni določena, tega indeksa ni mogoče uporabiti.
prisiljeno

vrstni red po
Če obstaja vrstni red po scenarijih, bodite pozorni na urejenost indeksa. Zadnje polje vrstnega reda z je del združenega indeksa in je postavljeno na konec vrstnega reda kombinacije indeksov, da se izognemo file_sort in vplivamo na uspešnost poizvedb. Primer: kje a=? in b=? vrstni red po c; Indeks naj bo zgrajen kot a_b_c; Protiprimer: Če je v indeksu iskanje razpona, potem urejenosti indeksa ni mogoče uporabiti, na primer kjer je a>10 vrstni red po b; Indeksnih a_b ni mogoče razvrstiti.
priporočiti

4. Napišite SQL železna pravila

-
Železni zakon
Raven
Pripombo
count(*)
Ne uporabljajte count(ime stolpca) ali count(constant) namesto count(*), ki je sintaksa za standardno število vrstic, določeno v SQL92, neodvisno od baze podatkov in neodvisno od NULL in ne-NULL. count(*) šteje vrstice z vrednostjo NULL, medtem ko count(ime stolpca) ne šteje vrstic s tem stolpcem NULL.
prisiljeno

Grof(ločen stol)
Šteje število unikatnih vrstic v stolpcu, razen NULL. Upoštevajte, da count(distinct col1, col2), če je eden od stolpcev v celoti NULL, vrne 0, tudi če ima drugi stolpec drugačno vrednost.
prisiljeno

Sum(col)
Ko so vrednosti stolpca vse NULL, count(col) vrne 0, sum(col) pa vrne NULL, zato morate biti pozorni na težave z NPE pri uporabi sum(). NPE problemom se lahko izognemo na naslednje načine: izberite if(isnull(sum(g)), 0, sum(g)) iz tabele;
prisiljeno

isnull
Uporabite isnull(), da določite, ali je vrednost NULL. NULL je NULL v primerjavi s katerokoli vrednostjo.
prisiljeno

Logika poizvedb s strani
Če je število 0, ga je treba vrniti neposredno, da se prepreči izvajanje naslednje paginacijske stavke.
prisiljeno

Zunanji ključi in kaskade
Uporaba tujih ključev in kaskadiranje je prepovedana, vsi koncepti tujih ključev pa morajo biti rešeni na aplikacijski plasti. Razlog: Tuji ključi in kaskade niso primerni za razpršene, visoko sočasne grozde, kaskadne posodobitve močno blokirajo, obstaja tveganje za nevihtne posodobitve podatkov, tuji ključi pa vplivajo na hitrost vstavljanja podatkovne baze.
prisiljeno

Shranjene procedure
Shranjene procedure so prepovedane, shranjene postopke pa je težko razhroščevati in skalirati, prav tako niso prenosljive.
prisiljeno

Popravek podatkov
Pri popravljanju podatkov (zlasti brisanju ali spreminjanju zapisov) najprej izberite tako, da se izognete nenamernemu brisanju, in izvršite ukaz posodobitve šele po potrditvi, da je pravilen.
prisiljeno

v
Če se temu ni mogoče izogniti, bi moralo biti število elementov za in nadzorovano znotraj 1000.
priporočiti

Tabela obrezovanja
Uporaba truncate tabele je prepovedana, saj je hitrejša od brisanja in porabi manj sistemskih in dnevniških virov, vendar je trunkate brez transakcij in ne sproži sprožilcev, ki bi lahko povzročili nesreče, zato te izjave ne uporabljajte v razvojni kodi.
Referenčni


5. ORM zemljevidi železnih zakonov

-
Železni zakon
Raven
Pripombo
Poizvedba po tabeli
Seznam polj, ki je prepovedana uporaba * za poizvedbe, mora biti jasen, katera polja so zahtevana.
prisiljeno

POJO
Booleov atribut razreda POJO ni mogoče dodati v is, medtem ko je treba polje baze podatkov dodati v is, kar zahteva preslikavo med polji in atributi v resultMap.
prisiljeno

Parametri vrnitve
Uporaba resultClass kot parametra za vračilo je prepovedana, tudi če vsa imena atributov razreda ustrezajo poljem baze podatkov eno za drugim, jih je treba definirati; Vsaka tabela mora imeti atribut, ki ji ustreza. Razlog: Nastavite razmerje preslikave tako, da povežete polje z razredom DO za lažje vzdrževanje.
prisiljeno

Parametri vrnitve
Prepovedano je neposredno uporabljati HashMap in HashTable kot izhod nabora rezultatov poizvedbe. Razlog: Vrsta vrednosti atributa je neobvladljiva.
prisiljeno

sql.xml Nastavitev parametrov
sql.xml Uporabite #{}, #param# za konfiguracijske parametre in ne uporabljajte ${}, saj je ${} nagnjen k SQL injekciji.
prisiljeno

queryForList
Uporaba queryForList (String statementName, int start, int size), ki je priložena Mybatisu, je prepovedana. Razlog: Implementira se tako, da pridobimo vse zapise SQL ukaza, ki ustrezajo statementName v bazi podatkov, nato pa uporabimo podseznam za pridobitev podmnožice začetne velikosti.
prisiljeno

Čas posodobitve
Pri posodabljanju zapisa tabele v bazi podatkov morate hkrati posodobiti čas spremembe zapisa.
prisiljeno

Posodobite zapise tabel v bazi podatkov
Ne piši velikega in popolnega vmesnika za posodobitev podatkov (posredovanega kot POJO razred). Pri izvajanju SQL ne posodabljajte nespremenjenih polj zaradi napak, neučinkovitosti in povečanega shranjevanja binlogov.
priporočiti

@Transactional
@Transactional Ne zlorabljajte transakcij. Transakcije vplivajo na QPS baze podatkov. Poleg tega, kjer uporabljate transakcije, morate upoštevati različne vidike shem povračila, vključno z vračanjem predpomnilnika, vračanjem v iskalnikih, kompenzacijo sporočil, statističnim popravkom itd.
Referenčni

Mybatis dynamic sql oznake
< compareValue v isEqual> je konstanta v primerjavi z vrednostjo atributa, običajno številko, ki označuje, da se ustrezni SQL ukaz izvede, ko je enak; < isNotEmpty> pomeni, da se izvede, ko ni prazen in ni ničen; < isNotNull> pomeni, da se izvede, ko ni null.
Referenčni








Prejšnji:SEO operativni zemljevid je prvi v celotnem omrežju, zbirka ultra-popolnih internetnih visokoločljivostnih operacijskih zemljevidov
Naslednji:[Zemeljske znanosti] DK Otroška enciklopedija Visokokakovostna enciklopedija iz Združenega kraljestva...
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com