CACHE INDEX

Sintassi

CACHE INDEX                      
  elenco_indici [, elenco_indici] ...
  IN nome_cache                   

elenco_indici:
  nome_tabella [[INDEX|KEY] (elenco_indici[, elenco_indici] ...)]

Spiegazione

L'istruzione CACHE INDEX assegna degli indici a una specifica cache delle chiavi. Può essere usato solo con le tabelle MyISAM.

Esempi

La seguente istruzione assegna gli indici delle tabelle t1, t2 e t3, a una cache delle chiavi chiamata hot_cache:

mysql> CACHE INDEX t1, t2, t3 IN hot_cache;
+---------+--------------------+----------+----------+
| Table   | Op                 | Msg_type | Msg_text |
+---------+--------------------+----------+----------+
| test.t1 | assign_to_keycache | status   | OK       |
| test.t2 | assign_to_keycache | status   | OK       |
| test.t3 | assign_to_keycache | status   | OK       |
+---------+--------------------+----------+----------+

Implementazione (per MyISAM)

Normalmente l'esecuzione di CACHE INDEX non dovrebbe impiegare molto tempo. Internamente è implementata come segue:

  • Trova la key cache desiderata (sotto un LOCK_global_system_variables)
  • Apre la tabella con un lock TL_READ_NO_INSERT.
  • Esegue un flush della key cache originale per il dato file (con un lock della key cache)
  • Esegue un flush della nuova key cache per il dato file (sicurezza)
  • Sposta il file alla nuova key cache (con uno share lock sul file)

Le uniche operazioni che potrebbero durare molto sono le acquisizioni dei lock sulla tabella e il flush della key cache originale, se vi sono molti lock sul file.

CACHE INDEX potrebbe essere implementato anche per Aria, se ce ne sarà bisogno.

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.