|
|
|
|
|
для: cheops
(04.04.2012 в 15:13)
| | Ура!
Разобрался!
Просто я тип таблицы неправильно выбрал - MEMORY
Поменял на InnoDB - теперь база летает как пташка (как минимум на 2 порядка быстрей работает) | |
|
|
|
|
|
|
|
для: cheops
(04.04.2012 в 15:56)
| | >Никто больше в этот момент не может работать с таблицей, правильно я понимаю? Так вроде так и должно быть?
Два процесса запущены на одном компьютере.
Каждый из них где-то раз в секунду обращается к базе.
При этом с вероятностью 1 к 50 локирует ряд общих таблиц.
Мне бы хотелось, чтобы при запросе к этим таблицам все желающие просто ждали, когда они освободятся, но выходит не так.
Процессы в основном, работают нормально, хоть и с необъянимыми задержками в десятки секунд, тогда как запросы к таблицам сами по себе длятся сотые, ну максимум, десятые доли секунды,
а я из РМА вообщен ен могу в базу заглянуть!
(Иногда получается, но редко) | |
|
|
|
|
|
|
|
для: Eugene77
(04.04.2012 в 15:49)
| | Никто больше в этот момент не может работать с таблицей, правильно я понимаю? Так вроде так и должно быть? | |
|
|
|
|
|
|
|
для: cheops
(04.04.2012 в 15:13)
| | Снимаю блокировку сразу как все запросы связанные с этой таблицей закончу.
UNLOCK TABLES; | |
|
|
|
|
|
|
|
для: Eugene77
(04.04.2012 в 15:05)
| | >а просто LOCK TABLES points WRITE, results WRITE, rangpoints WRITE;
А блокировку потом снимаете? | |
|
|
|
|
|
|
| Я первый раз пробую локировать таблицы, поэтому не знаю как подступиться к решению этой проблемы.
Запрос вот так выглядит, на который я получаю ответ скопированный в заголовок темы.
INSERT INTO rangpoints (
pointNum,
numTesters,
smoothness,
testers,
parent1,
parent2,
parent1frequency,
parent2frequency
)SELECT
points.num,
COUNT(DISTINCT results.testerNum ),
min(results.smoothness) AS smoothness,
GROUP_CONCAT(DISTINCT results.testerNum SEPARATOR ',') ,
points.parent1,
points.parent2,
count(points.parent1),
count(points.parent2)
FROM points, results
WHERE
points.num = results.pointNum
AND points.crc IS NOT NULL
GROUP BY points.num
HAVING
smoothness > 0 AND
ORDER BY RAND()
LIMIT 1000
|
Таблица типа MEMORY, но выборка в неё из InnoDB, впрочем, я не пишу "start transaction",
а просто LOCK TABLES points WRITE, results WRITE, rangpoints WRITE;
Это таой запрос у меня периодически из PHP посылается, а я попробовал его без лока из PMA,
в результате получил ответ (название темы) | |
|
|
|
|