Mysql
 sql >> база данни >  >> RDS >> Mysql

Предотвратяване на четене при актуализиране на таблицата

Ако приемем, че използвате машина за транзакции (обикновено Innodb), изчистете и попълнете отново таблицата в същата транзакция.

Уверете се, че вашите читатели използват READ_COMMITTED или по-високо ниво на изолация на транзакцията (по подразбиране е REPEATABLE READ, което е по-високо).

По този начин читателите ще продължат да могат да четат старото съдържание на таблицата по време на актуализацията.

Има няколко неща, за които трябва да внимавате:

  • Ако таблицата е толкова голяма, че изчерпва зоната за връщане назад - това е възможно, ако актуализирате цялата (да кажем) таблица с 1M редове. Разбира се, това може да се регулира, но има ограничения
  • Ако транзакцията е неуспешна частично и бъде върната назад - връщането назад на големи транзакции е МНОГО неефективно в InnoDB (тя е оптимизирана за ангажименти, а не за връщане назад)
  • Внимавайте с блокиранията и времето за изчакване на заключването, което е по-вероятно, ако използвате големи транзакции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Невалиден UTF8 символен низ при импортиране на csv таблица

  2. Изтриване на всички записи на таблица, които не са препратки от друга таблица

  3. mysql бавен при първата заявка, след това бърз за свързани заявки

  4. Динамична HTML таблица в PHP Mail

  5. MySQL - ИЗБЕРЕТЕ, ПРИСЪЕДИНЕТЕ