
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.06.2015, 19:14:31
|
|||
|---|---|---|---|
|
|||
Тактика секционирования |
|||
|
#18+
Добрый день. MySQL 5.5 Пытаюсь разбить на секции таблицу с ~120 млн. записей. В дальнейшем предполагается увеличение в разы, а эту таблицу приходится иногда соединять с ней самой, поэтому нарезать по месяцам (25-30 млн записей в месяц) кажется мне неплохой идеей. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. В итоге нарываюсь на "The total number of locks exceeds the lock table size". Насколько я понимаю, MySQL пытается заблокировать построчно, и просто не хватает места, чтобы все строчки перечислить. Вопросы: 1. Где именно не хватает места? Размер таблицы ~ 20Гб, ОЗУ -- 40 Гб. Гугление дало английские форумы, где пишут что эта ошибка означает нехватку оперативки. 2. Там же советуют сделать lock tables my_history, чтобы не блокировать построчно. Насколько это оправдано? 3. Могу ли я каким-то образом обойти запрет на использование lock tables в эвенте? 4. Можно ли отрезать по одной секции? Сделать VALUES LESS THAN ('2015-12-01'), а потом REORGANIZE PARTITION по одному месяцу сверху. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.06.2015, 18:37:23
|
|||
|---|---|---|---|
|
|||
Тактика секционирования |
|||
|
#18+
ClonCD, альтер тейбл обычно меняет структуру данных, и в такой ситуации файл данных таблици всегда пересоздаёться... так что зачастую, лучше вместо альтер на таблицу с большим обьёмом данных, сразу делать голую таблицу с новой структурой, и потом перекидывать туда данные... можно по частям... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1833089]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 314ms |

| 0 / 0 |
