I имеет следующий (упрощенный) Mysql таблица:MySQL Performance и Memcache
Requests:
+----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+-------+
| ID | bigint(20) | NO | PRI | NULL | |
| UniqueIdentifier | varchar(255) | YES | MUL | NULL | |
| UniversalServiceId | bigint(20) | YES | MUL | NULL | |
+----------------------+--------------+------+-----+---------+-------+
Наблюдение:
+---------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+---------+-------+
| ID | bigint(20) | NO | PRI | NULL | |
| Value | varchar(255) | NO | | NULL | |
| RequestId | bigint(20) | NO | MUL | NULL | |
+---------------------+--------------+------+-----+---------+-------+
Я индексировал UniqueIdentifier, UniversalServiceId и RequestID.
Таблицы запрашиваются на UniqueIdentifier и UniversalServiceId с помощью JOIN on RequestId.
Таблица наблюдений содержит много миллионов записей. Запросы очень медленно возвращаются, и мне интересно, есть ли что-то, что я могу сделать для повышения производительности. Я только что начал читать о memcache, но кажется, что он может быть полезен только после первого запроса (который часто является единственным) для конкретного набора данных.
Это они типа запроса, который используется:
select * from Observations where RequestId in (select ID from Requests where UniqueIdentifier = '123456' and UniversalServiceId = '1234'
Любые советы/рекомендации оценили!
Правильно ли я говорю, что Memcache не повлияет на производительность в этом случае? – skyman
memcached не сделает ничего, чтобы ускорить выполнение запроса к базе данных. Но это может повысить производительность вашего приложения, сохраняя часто используемые данные в памяти, поэтому вам не нужно запускать запрос к базе данных; что поможет в производительности базы данных, если вы можете разгружать повторяющиеся запросы для получения той же информации, избегая ненужных запросов к базе данных. Но если запрос базы данных медленный, я бы сначала рассмотрел эту проблему ... используйте EXPLAIN, чтобы показать план выполнения; множество способов улучшить производительность MySQL, увеличить размер пула буферов InnoDB, чтобы уменьшить ожидания ввода-вывода, использовать InnoDB, а не MyISAM и т. д. – spencer7593