Mam bardzo ruchliwą stronę internetową, na której co godzinę można wstawić tysiące nowych rekordów.
Ten jeden błąd paraliżuje witrynę:
PDOException: SQLSTATE[40001]: Serialization failure: 1213
Deadlock found when trying to get lock;
try restarting transaction: INSERT INTO {location_instance}
(nid, vid, uid, genid, lid) VALUES (:db_insert_placeholder_0,
:db_insert_placeholder_1, :db_insert_placeholder_2,
:db_insert_placeholder_3, :db_insert_placeholder_4);
Array ( [:db_insert_placeholder_0] => 1059 [:db_insert_placeholder_1] =>
1059 [:db_insert_placeholder_2] => 0 [:db_insert_placeholder_3] =>
cck:field_item_location:1059 [:db_insert_placeholder_4] => 1000 )
Byłbym bardzo zaskoczony, gdyby MySQL nie mógł poradzić sobie z tego typu obciążeniem. Zatem moje pytania brzmią: czy jest to problem z bazą danych i jak mogę skonfigurować MySQL, aby mógł obsługiwać tak duży ruch?
Mam kopię mojej witryny skonfigurowaną na serwerze programistycznym ze skryptami symulującymi obciążenie treści dodawanej do witryny. Korzystam z Ubuntu, stosu LAMP, z 16 GB pamięci RAM.
Trzeba przyznać, że nie mam zbyt dużej wiedzy na temat baz danych. W rzeczywistości zaczynam od domyślnego pliku my.cnf, który jest dołączany po zakończeniu instalacji „apt-get install”. Wszystkie tabele są Innodb. Jakie początkowe ustawienia konfiguracji i podejście poleciłbyś rozpocząć, aby rozwiązać ten problem?
Daj mi znać, jakich dodatkowych informacji możesz potrzebować.
Dzięki