Как мы можем кешировать MySQL-запрос на стороне сервера, на котором запущено Java-приложение? - PullRequest
0 голосов
/ 15 марта 2012

Пример: если большинству клиентов требуется заполнить форму, которая требует выбора штатов и городов.Так как же этот запрос может быть кэширован на стороне сервера.Поскольку название штата или города почти не меняется, поэтому рекомендуется их кэшировать.

Table 1:
state_name  state_id
__________  ________
state1         1
state2         2

Table 2:
city_name   city_id   state_id
_________   _______   ________
city1          1         1
city2          2         1
city3          3         2

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Создайте List<String> пар состояний и Map<String, String> пар [город, штат] и размещайте их на сервере в качестве статических данных только для чтения.Загрузите его из базы данных при запуске.

Я бы порекомендовал WeakHashMap в качестве вашей реализации.Это даст GC возможность выселить значения, если это абсолютно необходимо.

Количество состояний не изменится, но список городов может быть довольно большим.

1 голос
/ 15 марта 2012

Mysql по умолчанию будет кэшировать запросы в своем кеше запросов - http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

Конечно, кэш имеет конечный размер, поэтому результаты могут быть удалены, если выполняются другие запросы, но если этот запрос выполняется часто, кеш запросов mysql может оказаться достаточным для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...