2009-02-05 7 views
1

J'ai une table simple dans MySql dont la raison d'être est de stocker les logs. La table comporte une séquence auto-incrémentée et toutes les autres colonnes ont une intégrité référentielle nulle pour les autres tables. Il n'y a pas de clés ou d'index uniques sur les colonnes. La colonne avec autoincrement est la clé primaire.Les insertions SQL simultanées dans la même table sont-elles transactionnelles?

Est-ce que les INSERT concurrents peuvent interférer les uns avec les autres? Je définis interférence pour signifier la perte de données. J'utilise autocommit = true pour cet insert.

+0

Quel moteur de stockage utiliserez-vous? –

+0

J'utilise Innodb – ashitaka

+0

J'ai pensé que si cela fonctionne pour MyISAM, cela devrait fonctionner pour Innodb :) – ashitaka

Répondre

2

A partir du manuel MySQL pour le MyISAM storage engine:

"MyISAM supports concurrent inserts..." 
+0

+1 Entre nous deux, je suppose que la question est maintenant couverte :) – Learning

2

Oui. Pour InnoDB, plus d'informations here

+0

Voulez-vous fusionner les messages? –

3

Vous ne perdrez jamais des données simplement parce que vous faites des inserts simultanément. Si vous utilisez des transactions, vous risquez de "perdre" certains identifiants, mais pas de données réelles. (Imaginez que vous lanciez une transaction, que vous insériez quelques lignes et que vous effectuiez une restauration.) InnoDB aura alloué les ID auto_increment, mais il n'y a aucune ligne avec ces ID car vous avez effectué l'annulation.

Puisque vous n'avez pas besoin d'index, vous devriez jeter un coup d'œil au moteur de la table ARCHIVE. C'est étonnamment incroyablement rapide - et vos tables deviennent beaucoup plus petites ce qui rend les analyses de table quand vous lisez le tableau plus tard BEAUCOUP plus vite.

+0

J'ai expérimenté le moteur de la table d'archives beaucoup plus lentement que les autres moteurs, en particulier lors du filtrage des valeurs, car il n'y a pas d'index supportés dans le moteur ... –

+0

Cassy - oui, en effet. Si vous pouvez utiliser les index efficacement, un type de table avec des index sera plus rapide. Souvent, vous ne pouvez pas; et les analyses complètes sur les tables d'archivage sont aussi rapides que possible. Vous devez alors "à la demande" table numériser les données pertinentes dans un tableau récapitulatif (avec des index) et interroger celui-ci. –

Questions connexes