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

това заключва ли базата данни?

За мен документацията е малко неясна:

Методи за вътрешно заключване предполага, че при някои обстоятелства е възможно да се вмъкне в MyISAM таблица, докато друга сесия чете от нея:

Въпреки това, Проблеми със заключването на таблица показва ситуация, при която таблицата ще бъде заключена, докато SELECT завърши (това отговаря на вашата ситуация):

Таблицата InnoDB прилага заключвания на ниво ред, така че само четеният ред ще бъде заключен, а не цялата таблица.

Вместо да разчитам само на документацията, опитах малък тест:

  1. Създайте две таблици с една и съща структура:table_a и table_b .
  2. Попълнете table_a с 500 000 реда.
  3. Копиране на данни от table_a към table_b с помощта на INSERT INTO ... SELECT изявление.
  4. По време на процеса на копиране използвайте друга сесия, за да вмъкнете нов ред в table_a .
  5. Проверете дали table_b съдържа новия запис.

Когато и двете таблици са MyISAM, table_b не съдържа новия запис след копието. Когато и двете таблици са InnoDB, table_b съдържаше новия запис след копието. Повторих това три пъти и, както се очакваше, резултатът беше един и същ всеки път.

Така че, накратко, ако вашата таблица е MyISAM, тя ще бъде заключена. Ако е 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. Миграция на WordPress сайт - липсват икони

  2. Как да конфигурирам Rails за достъп без парола до отдалечена база данни

  3. php echo не работи

  4. Добавете mod_mysql, mod_xml и mod_zlib към apache

  5. Не може да се свърже с mysql база данни [strato]