Jóváhagyta a legjobb orosz programozók

5.4.7 A nyitó és záró táblázatok MySQL

table_cache paramétereket. max_connections és max_tmp_tables határozza meg a fájlok maximális számát a kiszolgálón tartja nyitva. Ha növeli az egyik vagy mindkét paraméter, akkor lehetséges, hogy találkozik egy korlátként az operációs rendszer számos nyitott fájlleírók az egy folyamat. Sok rendszerben azonban ez a korlát növelhető. Ami a módját, hogy módosítsa ezt az értéket a különböző rendszerek egészen más lehet, minden esetben, akkor olvassa el a dokumentációt az operációs rendszert.

Értékek table_cache max_connections és egymással. Például, a 200 egyidejű kapcsolat kell egy cache a tábla mérete legalább 200 * n, ahol n - a maximális száma a kapcsolódó táblázatok. Arra is szükség van, hogy fenn néhány extra fájlleírókkal ideiglenes táblák és fájlokat.

Meg kell győződnie arról, hogy az operációs rendszer képes kezelni számos nyitott fájlleírók, ami azt sugallja, ez a beállítás table_cache. Ha túl magasra table_cache. akkor a MySQL mehet túl a megengedett számú fájlleírók, húzza ki, hogy nem fut lekérdezések és nagyon törékeny. Arra is szükség van, hogy vegye figyelembe, hogy úgy két fájlleírókkal minden egyedi nyitott asztal egy MyISAM kezelő. Megengedett MySQL száma fájlleírók növelhető futtatását --open-fájlokat-limit = # (lásd A.2.16 fájl nem található (A fájl nem található)).

A táblák maximális száma a cache nyitott asztalok egyenlő lesz a meghatározott összeget table_cache (alapértelmezett - 64; ez a szám segítségével lehet módosítani az -O opció = # table_cache a mysqld). Vegye figyelembe, hogy fut a MySQL lekérdezés átmenetileg nyitott és több asztalon.

A fel nem használt tábla van zárva, és eltávolítjuk a cache táblákat a következő esetekben:

  • Ha a gyorsítótár megtelik, és a patak próbál megnyitni egy asztal, ez hiányzik cache.
  • Ha a cache több mint table_cache bemeneti adatokat, valamint a menet a táblázat segítségével többé.
  • Ha valaki végrehajtja MySQLadmin frissítési vagy MySQLadmin flush-asztalok.
  • Ha valaki végrehajtja ÖBLÍTŐ táblákat.

Amikor az asztal cache megtelik, a kiszolgáló a következő eljárást, hol van a bemeneti adatok cache felhasználásra:

  • Nem használt ebben az időben az asztalnál megjelent a sorrendben a legutóbb használt.
  • Ha a gyorsítótár megtelik, és nincs tábla nem lehet kiadni, és annak szükségességét, hogy nyit egy új táblát, a cache átmenetileg meghosszabbodik, amennyire szükség van.
  • Ha a gyorsítótár egy ideiglenesen nyújtott állapotban és egy asztal megy a használt használaton kívüli állapotban, ez a táblázat van zárva, és megjelent a gyorsítótárból.

Táblázat megnyitott egyes egyidejű hozzáférést. Ez azt jelenti, hogy ha két menet, hogy elérheti ugyanazt a táblázatot, vagy hozzáférni kétszer ebben a táblázatban, az azonos lekérdezés (használatával AS), akkor ez a táblázat kell nyitni kétszer. Az első felfedezés minden asztalra kettőn fájlleírókkal; valamennyi további felhasználásra - csak az egyik. Kiegészítő fogantyú az első nyitó használják index file; ez a leíró osztozik minden szál.

Ha megnyitjuk az asztal csapat HANDLER tábla_neve OPEN létrehoz egy külön tábla objektum egy adott áramlását. Ez a táblázat az objektum nem áll rendelkezésre a másik szál, és nem lesz lezárva, amíg a menet felhívja HANDLER table_name BE parancs vagy áramlási önmagában nem teszi tönkre (lásd 6.4.2 HANDLER Syntax). Ha ez megtörténik, az asztal kerül vissza a táblázatban cache (ha üres).

Ahhoz, hogy megtudja, nem túl kicsi cache asztal, akkor ellenőriznie kell a változó Opened_tables. Ha az értéke elég magas, akkor is, ha még nem tette túl gyakran parancs ÖBLÍTŐ táblákat. meg kell növelni a cache táblázatok (lásd 4.5.6.3 SHOW STATUS).

Kapcsolódó cikkek