Le insert concorrenti

Lo Storage Engine MyISAM supporta le insert concorrenti (concurrent insert). Questa funzionalità permette l'esecuzione delle SELECT mentre una INSERT è in corso, riducendo la contenzione.

Se le insert concorrenti sono abilitate o meno dipende dalla variabile di sistema concurrent_insert, che può avere i seguenti valori:

  • NEVER (0) disabilita le insert concorrenti.
  • AUTO (1) permette di usare le insert concorrenti solo su tabella che non hanno blocchi liberi (cioè non sono stati cancellati dati nel mezzo della tabella dopo l'ultima OPTIMIZE TABLE). Questo è il valore predefinito.
  • ALWAYS (2) permette sempre l'uso delle insert concorrenti.

Se si utilizza il log binario, le istruzioni CREATE TABLE ... SELECT e INSERT ... SELECT non possono utilizzare le insert concorrenti. Inoltre questi comandi richiedono un lock in lettura sulla tabella, perciò le insert concorrenti dovranno attendere. Questo garantisce che il log binario possa essere utilizzato in modo sicuro per recuperare i dati.

Se un'istruzione INSERT contiene la clausola HIGH_PRIORITY, le insert concorrenti non possono essere usate. La parola chiave DELAYED in genere non è necessaria se le insert concorrenti sono abilitate.

LOAD DATA INFILE usa le insert concorrenti solo se la parola chiave CONCURRENT è specificata. Questo rende il comando più lento (anche se nessun'altra sessione accede alla tabella) ma riduce la contenzione.

LOCK TABLES consente le insert concorrenti che non sono in conflitto, se si usa il lock di tipo READ LOCAL. Se la parola LOCAL è omessa, le insert concorrenti non sono consentite.

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.