Stiamo creando un sistema altamente transazionale con MySQL come DB (motore innodb). Abbiamo un trigger di inserimento e aggiornamento sulla tabella t1 che sta aggiornando la tabella t2 e t3. Abbiamo osservato che ogni volta che il volume di utenti simultanei è elevato, stiamo diventando dead-lock sulla tabella t1. Supponiamo che il trigger stia emettendo un lock da tavolo fino a quando non sta completando la sua esecuzione. Abbiamo abbassato il grilletto su t1 e sorprendentemente non esiste più un deadlock.Trigger in un sistema altamente transazionale
La mia domanda:
- Non è forse consigliabile avere scatto in un sistema altamente transazionale
- Se non attivano quali sono le nostre altre opzioni per attuare la stessa logica.
La tabella t1 ha circa 70.000 file e aumenta su base giornaliera.
Apprezzare qualsiasi input.
Grazie in anticipo.
Non hai fornito abbastanza informazioni. L'emissione di 'SHOW ENGINE INNODB STATUS' ti mostrerà la causa del deadlock. La riga 70k non è proprio nulla, quello che dovresti fare (se vuoi aiuto) è pubblicare la query in questione, la struttura della tabella e il trigger. È possibile sostituire i nomi dei campi effettivi con lettere in modo che la logica aziendale non venga rivelata. –