Устранение некоторых проблем с производительностью БД в довольно типичном приложении EclipseLink / JPA.
Я вижу частые запросы, которые занимают 25-100 мс. Это простые запросы, просто выбирая все столбцы из таблицы, где ее первичный ключ равен значению. Они не должны быть медленными.
Я просматриваю время запроса в журнале postgres, используя log_min_duration_statement, так что это должно устранить любые издержки сети или приложения.
Этот запрос не медленный, но он используется очень часто.
Почему выбор * по первичному ключу будет медленным?
Это специфично для postgres или это общая проблема БД?
Как я могу ускорить это? В общем? Для postgres?
Пример запроса из журнала pg:
2010-07-28 08:19:08 PDT - LOG: duration: 61.405 ms statement: EXECUTE <unnamed> [PREPARE: SELECT coded_ele
ment_key, code_system, code_system_label, description, label, code, concept_key, alternate_code_key FROM coded
_element WHERE (coded_element_key = $1)]
Таблица содержит около 3,5 миллионов строк.
Я также запустил EXPLAIN и EXPLAIN ANALYZE для этого запроса, он выполняет только сканирование индекса.