2012-07-04 2 views
0

우리는 삽입 쿼리를 발생시킬 때마다 해당 특정 테이블이 일정 기간 동안 잠겨있는 순간에 해당 시점을 관리합니다. 이 시간은 데이터베이스에 삽입해야 할 행에 따라 몇 초 또는 몇 초가 될 수 있습니다.거기에 mysql의 대기 시간을 관리 할 수있는 방법이 있습니다

나는 lac 이상의 사용자를 보유한 대학을위한 신청서를 개발 중입니다.

때문에 나는 내가 그것을 googleing하고 어떤 일 마지막으로 돌보는하고 있고 교사가 일부 업데이트를 넣을 때마다, 나는 학생을 통지하고,

10 simple read query = 1 simple write query 

가장 큰 문제는 notification이다 따를 때 나는 staticstics있어 그 학생 만이 관심있는 사람에게 통보 할 것입니다. 따라서 하나의 업데이트에 10000 + 통보가있을 수 있으며 이는 확실히 3-5 초가 걸릴 수 있습니다. (waiting time). 따라서 모든 읽기가 대기열에 있습니다.

대기 시간을 줄일 수있는 방법이 있습니까?

+0

도움이 되나요? ['sleep'] (http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_sleep) – diEcho

+0

그것이 도움이 될 것이라고 생각하지 않습니다. – KuKu

답변

1

아마도 MyISAM 대신 InnoDB를 사용할 수 있습니다. 전자는 행 수준 잠금을 사용하지만, 후자는 쓰기 작업시 테이블 수준 잠금을 사용하기 때문일 수 있습니다. 테이블 엔진으로서 InnoDB를 사용하면 (자), 1 개의 행만이 락이됩니다 만, 그 외의 컨텐츠는 계속 표시 될 가능성이 있습니다.

+0

그래서 만약 내가 10000 + 행을 삽입하고 읽기 요청이 오면, 읽기 요청이 실행되고 삽입이 진행될 것입니다. – KuKu

+1

물론, 왜 안 되니? 다른 곳에서는 거대한 사이트가 한 명을 저장하는 동안 다른 사용자가 사이트를 방문 할 수 없으므로 사용자에게 저장하는 것을 허용 할 수 없습니다. – feeela