Mysql - Egy táblában 200 millió rekordom van, egy query több mint 12 percig tart. Hogyan gyorsítanátok meg?
Megfelelő mezők indexelesevel, storage engine megfelelő kivalasztasaval, adatbázis SSD-re pakolasaval.
És persze, mindenekelőtt optimális lekerdezessel. Ha 5 join van benne meg 8 agregator függvény, akkor ne is remenykedj. :)
Hol van az adatbázis? Mekkora az eredményhalmaz?
Mondjuk nem lehet, hogy a 20-30 GB-os táblából elkéred a 20% rekordot, aztán egyszerűen annyi, míg letölti az eredményt a szerveredről, amiről még azt se mondtad meg, hogy távoli gépen van, vagy a sajátodon?
Mondjuk ekkora táblánál már érdemes külön táblákba rendezni az adataidat valamilyen közös jellemző alapján - több tíz (vagy inkább olyan száz) GB átnézése semmilyen technikával nem lesz meg 50ms alatt - de ha pl neveket tárolsz (vagy emaileket, vagy bármi ilyesmit) benne, akkor kezdőbetű alapján létrehozhatsz külön táblákat, és kapásból jelentősen gyorsabb a lekérdezés (amennyiben csak adott névcsoportban akarsz keresni).
De ha elárulnád, mi van a táblában, és milyen keresést valósítasz meg, talán tudnánk segíteni - bár el sem tudom képzelni, hogy hozzáértés hiányában milyen adataid lehetnek 200 milliós rekordszámban :D
@Sir Butcher
Ha szétszeded a táblákat kezdőbetű alapján, akkor feltételezed, hogy tudod, melyikben kell keresni, azaz megnézed a kezdőbetűt, és az alapján keresel.
Nem ugyanerre való az adatbázis-szoftver? Ha az adott mező szerint van rendezve, vagy van rajta index, akkor szerintem ez kapitális nagy baromság.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!