2011-04-19 5 views
3

중소 규모 웹 사이트의 경우 internal locking of MySQL으로 충분합니까? 나의 테이블은 MyISAM이다. SELECT 및 INSERT를 사용하여 동시에 수백 명의 사람들이 특정 테이블을 공격 할 수 있습니다. INSERT/UPDATE 쿼리가 중복되지 않습니다. 즉, 두 명의 사용자가 동일한 메모 ID를 업데이트하지 않습니다. INSERT/UPDATE는 일회성 작업 일 것입니다. 동일한 쿼리 내에서 데이터를 읽거나 추가 작업을 수행하지 않아도됩니다.MySQL (MyISAM 테이블)에서 테이블을 잠글 수 있습니까?

특히, 내 웹 사이트에 대한 의견/채팅 시스템을 설정하고 있습니다. 최악의 경우, 새로운 게시물을 읽기 위해 댓글/채팅 테이블에서 SELECT 문을 수행하는 2 백 명이있을 수 있습니다. INSERT의 경우, 언제든지 새 주석을 삽입하려고하는 100 명의 다른 사람들이있을 수 있습니다.

다른 질문에 SO가 있는데 this article이 발견되었으며 LOCK TABLES는 "자체 포함 된 삽입, 업데이트 또는 삭제 작업에는 필요하지 않습니다"라고 나와 있습니다. 내가 가지고있는 DB 트래픽의 양에 대한 좋은 실행입니까? TIA에 조언을 구하십시오.

답변

0

유일한 형태의 MyISAM 테이블 잠금은 테이블 잠금입니다. 아이디어는 작동하는 동안 아무도 액세스 할 필요가 없도록 충분히 빠르도록 설계 한 것입니다. 맞습니다 - YMM은 확실히 V입니다. 그러나 대부분의 중소 규모 웹 사이트에서는 괜찮습니다. intance를 위해, 그것은 WordPress가 사용하는 것이다.

+0

이제 더 많은 사용자 잠재 고객을 예상하여 어떤 형태의 잠금을 구현하는 것이 더 좋을까요? MyISAM 테이블은 동시 질의 (INSERT/UPDATE/SELECT/등)를 허용하고, 동시 이벤트 ([concurrent_insert] (http://dev.mysql.com/doc))를 처리하는 MySQL 시스템 변수가 있다는 것을 알고 있습니다. /refman/5.0/en/server-system-variables.html#sysvar_concurrent_insert)). 이 변수는 MyISAM 테이블이 테이블 중간에있는 DELETES/etc 같은 구멍을 다루는 방식을 다룬다. 이러한 "구멍"이 제대로 처리되지 않으면 데이터 손상의 원천이 될 수 있습니까? TIA. – broncozr

0

잠금은 아마도 행을 으로보고을 편집하는 경우 걱정할 필요가있는 부분 일 것입니다. 수행중인 작업에 대해 잠글 걱정하지 마십시오. 여기에 잠금을 사용하면 성능이 저하됩니다.

관련 문제