sql >> Database teknologi >  >> RDS >> Mysql

Store tabeller og analyser i MySql

Mens du kommer mod 'respektabel ', 2 millioner rækker er stadig en relativt lille størrelse for et bord. (Og derfor er en hurtigere ydeevne typisk mulig)

Som du fandt ud af, er front-ended jokertegnet særligt ineffektive, og vi bliver nødt til at finde en løsning på dette, hvis denne brugssag er fælles for din applikation.

Det kan bare være, at du ikke har det rigtige sæt indekser . Inden jeg fortsætter, vil jeg dog gerne understrege, at selvom indekser typisk vil forbedre DBMS-ydeevnen med SELECT-sætninger af enhver art, har det systematisk en negativ effekt på udførelsen af ​​"CUD"-operationer (dvs. med SQL CREATE/INSERT, UPDATE , SLET verber, dvs. de forespørgsler, der skriver til databasen i stedet for bare at læse til det). I nogle tilfælde kan den negative indvirkning af indekser på "skrive"-forespørgsler være meget betydelig.

Min grund til at understrege den ambivalente karakter af indekser er, at det ser ud til, at din applikation udfører en rimelig mængde dataindsamling som en normal del af dens drift, og du skal holde øje med mulig forringelse, efterhånden som INSERT-forespørgslerne bliver langsommere . Et muligt alternativ er at udføre dataindsamlingen i en forholdsvis lille tabel/database, med ingen eller meget få indekser, og løbende importere data fra denne inputdatabase til en database, hvor selve dataminingen foregår. (Efter at de er importeret, kan rækkerne slettes fra "inputdatabasen", idet den holdes lille og hurtig til INSERT-funktionen.)

En anden bekymring/spørgsmål handler om bredden af ​​en række i cast-tabellen (antal kolonner og summen af ​​bredderne af disse kolonner). Dårlig ydeevne kan være knyttet til det faktum, at rækkerne er for brede, hvilket resulterer i for få rækker i bordets bladknuder og dermed en dybere træstruktur end nødvendigt.

Tilbage til indekserne...
i lyset af de få forespørgsler i spørgsmålet, ser det ud til, at du kunne drage fordel af et ip + note indeks (et indeks lavet i det mindste med disse to nøgler i denne rækkefølge). En fuldstændig analyse af indekssituationen og ærligt talt en mulig gennemgang af databaseskemaet kan ikke udføres her (ikke nok info til en...), men den generelle proces for at gøre det er at lave en liste over de mest almindelige use case og for at se, hvilke databaseindekser der kunne hjælpe med disse sager. Man kan få indsigt i, hvordan bestemte forespørgsler håndteres, indledningsvis eller efter at indeks(er) er tilføjet, med mySQL-kommandoen EXPLAIN.

Normalisering ELLER demormalisering (eller faktisk en kombination af begge!) er ofte en levedygtig idé til også at forbedre ydeevnen under minedrift.



  1. Sådan downloader og installerer du SQLite-værktøjer

  2. Kopier/dupliker/sikkerhedskopier databasetabeller effektivt - mysql

  3. Hvordan bestiller man efter antal i SQL?

  4. Hvordan kan jeg få det sidste indsatte id ved hjælp af Hibernate