Повышение производительности: как я могу архивировать класс домена Grails

#mysql #grails

#mysql #grails

Вопрос:

Я запускаю сайт блога, построенный поверх grails. Со временем база данных mysql растет. База данных имеет имя таблицы ‘post’. Эта таблица содержит почти 1 миллион записей. Запрос этой таблицы становится очень трудоемким.

Теперь я пытаюсь разделить таблицу и хочу архивировать старые записи. Так что сложные запросы к базе данных занимают меньше времени.

То, что я пытаюсь выполнить, выглядит примерно так,

 class Post{
    //... properties
}

class PostArchive extends Post{

}
  

Увеличит ли этот подход производительность? Есть ли какой-либо плагин, доступный для выполнения таких задач?

Комментарии:

1. Трудно сказать, повысит ли это производительность, не видя, что работает плохо. Например, ваш вопрос не включает запросы, которые вы пытаетесь оптимизировать. Я думаю, что если вы не предоставите эту информацию, это не даст хорошего ответа.

2. Выполнение любого запроса SELECT в таблице post занимает гораздо больше времени. Объединение запроса с пользовательской таблицей делает ситуацию еще хуже.

3. Вы оптимизировали свою базу данных с помощью индексов и тому подобного? Я бы подумал о том, чтобы начать с этого, прежде чем менять приложение. Причина, по которой я спрашиваю, заключается в том, что у меня есть приложения Grails с сотнями миллионов записей, и я часто выбираю (с несколькими объединениями) из этих таблиц и вижу второстепенные ответы.

4. Я еще не использовал индексацию. Спасибо, что упомянули об этом. Пожалуйста, поделитесь своим опытом реализации. Должен ли я использовать GORM для индексации столбца или индексировать столбцы непосредственно в БД.

5. Это действительно зависит от вас. Любой из них приведет к тому же. Часто проще моделировать сложные индексы в базе данных вместо GORM, но это только мой личный опыт (и отсутствие опыта использования GORM для управления индексами). Я уверен, что это вполне возможно, если вы приложите усилия, чтобы узнать, как это сделать.

Ответ №1:

Мы создаем абстрактный домен с нашей базовой настройкой, а затем расширяем его. Итак, у вас будет

 abstract class BasePost {

class Post extends BasePost{

class PostArchive extends BasePost{