Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 9362|Válasz: 0

[Forrás] MySQL database iron rule

[Linket másol]
Közzétéve 2019. 10. 10. 14:00:44 | | |
Egy jó adatbázis-specifikáció segít csökkenteni a szoftver megvalósításának összetettségét és csökkenteni a kommunikációs költségeket.

1. Raktárépítés vastörvénye

-
Vastörvény
Szint
megjegyzés
Karakterkészlet
Használj UTF-8-at. Ha az emoji tárolt, használd utf8mb4 tárolásra.
kényszerítve

Rendezési szabályok
Használd utf8_general_ci
kényszerítve

2. Az asztalépítés vastörvénye

-
Vastörvény
Szint
megjegyzés
egzegézis
Mindenképpen legyenek terepi jegyzetek.
kényszerítve

kódol
Használj UTF-8-at. Ha az emoji tárolt, használd utf8mb4 tárolásra.
kényszerítve

hogy a mező fogalmi volt-e
A név is_xx-vel kell elnevezni, és az adattípus nem aláírt tinyint (1 igen, 0 nem), pl. is_deleted(1 törlés, 0 nem törölve).
kényszerítve
Bármely mezőnek nem kell aláírni, ha nem negatív
Tábla neve, mező neve
Csak kisbetűk, aláhúzások vagy számok használhatók; Tilos aláhúzással vagy számmal kezdeni; Csak számok használata két aláhúzás között tilos; Tiltsd ki a fenntartott szavakat; Többes számú főnevek használata tilos a táblanevekben.
kényszerítve

Az adatbázis és tábla nevének elnevezése
Az adatbázis nevének összhangban kell lennie az alkalmazás nevével, és a tábla nevének az üzleti Name_Role szerint kell elnevezni.
kényszerítve

Index elnevezés
A fő kulcsindex pk_ mezőnevet használ; Egyedi index uk_ mezőnevével; A normál indexek idx_ mezőneveket használnak.
kényszerítve
pk_ a fő hangnem; uk_ egyedi hangnem; idx_ index
Tizedes típus
Az adattípus tizedes, a lebegő és duplázó használata tilos, a lebegő és a duplázó pontosságvesztéssel jár, és ha a tárolt adattartomány meghaladja a tizedes tartományt, ajánlott az adatokat egész és tizedes számokra bontani, és külön tárolni.
kényszerítve

Varchar típus
A varchar egy változó hosszú lánc, előre nincs tárolóhely, a hossz nem haladhatja meg az 5000 karaktert, ha a hossz nagyobb, ha a hossz 5000-nél nagyobb, alkalmazz szöveget (készíts külön táblát, használd a fő kulcsot a megfelelő megoldáshoz, hogy elkerüld a többi mező indexelési hatékonyságának befolyásolását).
kényszerítve

A tábla nevében három mező kell lennie
id (adattípus: nem aláírt bigint, egyetlen tábla-inkrement, lépésméret 1), gmt_create, gmt_modified (aktív létrehozási idő, passzív frissítési idő, adattípus dátumidő).
kényszerítve

Mezőredundancia
A mezők megfelelő redundanciát biztosítanak, de figyelembe kell venni az adatok konzisztenciáját, és a redundáns mezőknek 1) ritkán kell módosítaniuk; 2) Nem egy nagyon hosszú mező, nemhogy szövegmező.
ajánl

Oszd meg az adatbázist és a táblákat
A partíció csak akkor ajánlott, ha egy táblázat sorainak száma meghaladja az 5 millió sort, vagy ha egy tábla kapacitása meghaladja a 2 GB-ot.
ajánl


A megfelelő karaktertárolási hossz beállítása nemcsak az adatbázis tábla- és indextárolóhelyet takarítja meg, hanem ami még fontosabb, javítja a keresési sebességet.

3. Hozz létre egy index-vastörvényt

-
Vastörvény
Szint
megjegyzés
Egyedi index
Az üzletben egyedi jellemzőkkel rendelkező mezőket, még ha ezek a mezők kombinációja is, egyedileg indexelni kell. Bár az egyedi index befolyásolja a beilleszkedési sebességet, ez a veszteség elhanyagolható, de jelentősen javítja a lekérdezési sebességet. Ezen túl, még ha az alkalmazásréteg teljes ellenőrzési ellenőrzéssel rendelkezik is, amíg nincs egyedi index, a Murphy-törvény szerint elkerülhetetlenül piszkos adatok keletkeznek.
kényszerítve

Csatlakozzon
Több mint három tábla tiltja a csatlakozást, a csatlakozást igénylő mezők és az adattípusoknak következetesnek kell lenniük; Ha több tábla is lekérdezésekhez van társítva, győződjön meg róla, hogy a hozzá tartozó mezőknek legyen egy indexük. Még ha dupla táblacsatlakozásod is van, figyelj a táblázatindexelésre és az SQL teljesítményre.
kényszerítve

Varcharfield
Az index hosszát meg kell határozni, és nem szükséges minden mezőt indexelni, csak a tényleges szöveg szerinti különbség alapján határozzuk meg az index hosszát. Az index hossza és megkülönböztetés ellentmondáspáros, általában a string típusú adatoknál a 20 hosszú indexek megkülönböztetési fokozata több mint 90%, amit a count (distinct bal(oszlop neve, index hossz))/count(*) megkülönböztetési foka határozhat meg.
kényszerítve

Az oldalkeresésnél tilos az elmosódás
Az oldalkeresés tiltja az elmosódást vagy a teljes elmosódást, ha szükséges, kérjük, menj a keresőmotorhoz a megoldáshoz. Tilalom ok: Az indexfájl a B-fa ballegbalabb előtagjának megfelelője van, és ha a bal oldali érték nincs meghatározva, akkor ez az index nem használható.
kényszerítve

Rendezés
Ha van forgatókönyv szerinti sorrend, figyelj az index rendezettségére. Az utolsó mező az egyesített index része, és az index kombinációs sorrend végén helyezik el, hogy elkerüljék a file_sort és befolyásolják a lekérdezések teljesítményét. Példa: ahol a=? és b=? c-vel sorrend; Az indexet úgy kell felépíteni, hogy a_b_c; Ellenpélda: Ha az indexben van tartománykeresés, akkor az index sorrendi értéke nem használható, például ahol a>10 b-re sorrend; Az index a_b nem rendezhető.
ajánl

4. Írj SQL vasszabályokat

-
Vastörvény
Szint
megjegyzés
count(*)
Ne használd a count(column name) vagy count(constant) kifejezéseket a count(*) helyett, amely az SQL92 által meghatározott sorok standard számának szintaxisa, függetlenül az adatbázistól, és független a NULL és a non-NULL-tól. a count(*) a NULL értékű sorokat számolja, míg a count(oszlop neve) nem számolja azokat a sorokat, amelyekben ez a NULL oszlop van.
kényszerítve

Count (megkülönböztető col)
Számolja az oszlopban lévő egyedi sorok számát, kivéve a NULL-t. Fontos megjegyezni, hogy a count (külön col1, col2), ha az egyik oszlop mind NULL, akkor 0-t ad vissza, még akkor is, ha a másik oszlop más értékkel rendelkezik.
kényszerítve

sum(col)
Ha egy oszlop értéke mind NULL, a count(col) 0-ot ad, de a sum(col) NULL-t, ezért figyelni kell az NPE problémákra a sum() használatkor. Az NPE problémák a következő módokon kerülhetők: válasszuk if(isnull(sum(g)), 0, sum(g)) a táblából;
kényszerítve

isnull
Használd az isnull() gombot, hogy megállapítsuk, NULL érték-e. A NULL NULL bármely értékhez képest.
kényszerítve

A paginációs lekérdezés logika
Ha a szám 0, akkor közvetlenül vissza kell küldeni, hogy elkerüljék a következő oldalozási utasítás végrehajtását.
kényszerítve

Külső kulcsok és zuskadok
Idegen kulcsok használata és kaszkádozása tilos, és minden idegen kulcsfogalmat az alkalmazási rétegen kell megoldani. Ok: Az idegen kulcsok és kaszkádok nem alkalmasak elosztott, nagy párhuzamú klaszterekhez, a kaszkádfrissítések erősen blokkolnak, fennáll az adatbázis-frissítési viharok kockázata, és az idegen kulcsok befolyásolják az adatbázis behelyezési sebességét.
kényszerítve

Tárolt eljárások
A tárolt eljárások tiltottak, a tárolt eljárásokat nehéz hibakeresés és skálázás szempontjából, és nem hordozhatók.
kényszerítve

Adatkorrekció
Adatjavításkor (különösen a rekordok törlése vagy módosítása) először válaszd az elsőt, hogy elkerüld a véletlen törlést, és csak akkor hajtsd végre a frissítési utasítást, ha megerősíted a helyességét.
kényszerítve

in
Ha nem lehet elkerülni, akkor a következő készletelemek számát 1000-en belül kell szabályozni.
ajánl

Rövidített táblázat
Tilos a truncate table használata, amely gyorsabb, mint a törlés, és kevesebb rendszer- és naplót használ, de a truncate tranzakciómentes, és nem indít triggereket, amelyek baleseteket okozhatnak, ezért ezt a mondatot ne használd fejlesztési kódban.
utalás


5. Az ORM vastörvényeket térképeznek

-
Vastörvény
Szint
megjegyzés
Táblalekérdezés
A * lekérdezéshez tilos mezők listájának egyértelműnek kell lennie, mely mezők szükségesek.
kényszerítve

POJO
A POJO osztály Boolean attribútumja nem adható hozzá az is-hez, míg az adatbázis mezőt is kategóriába kell adni, ami megköveteli a mezők és attribútumok közötti leképezést az resultMap-ben.
kényszerítve

Visszatérési paraméterek
Tilos a resultClass-ot visszaküldési paraméterként használni, még akkor is, ha minden osztályattribútumnev egyenként egyezik az adatbázis mezőivel, azokat definiálni kell; Cserébe minden táblának kell lennie egy hozzá tartozó attribútummal. Ok: Konfiguráld a leképezési kapcsolatot, hogy a mezőt a DO osztályhoz kapcsolja az egyszerű karbantartás érdekében.
kényszerítve

Visszatérési paraméterek
Tilos közvetlenül használni a HashMapet és a HashTable-t a lekérdezés eredményhalmazának kimeneteként. Ok: Az attribútumérték típusa irányíthatatlan.
kényszerítve

sql.xml Paraméterek konfigurálása
sql.xml Használd a #{}, #param# konfigurációs paramétereket, és ne használd a ${}-t, mivel a ${} hajlamos az SQL befecskendezésre.
kényszerítve

queryForList
A Mybatishoz tartozó queryForList (String statementName, int start, int size) használata tilos. Ok: Úgy valósítják meg, hogy az adatbázisban található összes SQL utasítás rekordját letöltik, amely a statementName-hez felel meg, majd a subList-et használva megkapjuk a start, size részhalmazát.
kényszerítve

Frissítési idő
Egy adatbázistábla rekord frissítésekor ugyanabban az időben kell frissítened a rekord módosítási idejét is.
kényszerítve

Adatbázis-tábla rekordok frissítése
Ne írj egy nagy és teljes adatfrissítési interfészt (POJO osztályként adják be). SQL futtatásakor ne frissítsd a változtatatlan mezőket a hibahajlamos, hatékonytalan és megnövekedett binlog tárolás miatt.
ajánl

@Transactional
@Transactional Ne bántsd vissza a tranzakciókat. A tranzakciók befolyásolják az adatbázis QPS-jét. Ezen túlmenően, amikor tranzakciókat használsz, figyelembe kell venni a visszafordítási sémák különböző aspektusait, beleértve a cache rollback-et, keresőmotor-visszagörgetést, üzenetkompenzációt, statisztikai korrekciót stb.
utalás

Mybatis dinamikus SQL címkék
< compareValue az isEqual-ban> egy állandó az attribútumértékhez képest, általában egy szám, ami azt jelzi, hogy a megfelelő SQL utasítást akkor hajtják végre, amikor egyenlő; < isNotEmpty> azt jelzi, hogy akkor hajtják végre, ha nem üres és nem null; < isNotNull> azt jelzi, hogy akkor hajtják végre, amikor nem null.
utalás








Előző:Az SEO műveleti térkép az első az egész hálózaton, egy ultra-teljes internetes nagyfelbontású műveleti térképek gyűjteménye
Következő:[Földtudomány] DK Gyermekenciklopédia Egy magas színvonalú enciklopédia az Egyesült Királyságból...
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com