|
|
|
Тактика секционирования
|
|||
|---|---|---|---|
|
#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 по одному месяцу сверху. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 19:14:31 |
|
||
|
Тактика секционирования
|
|||
|---|---|---|---|
|
#18+
ClonCD, альтер тейбл обычно меняет структуру данных, и в такой ситуации файл данных таблици всегда пересоздаёться... так что зачастую, лучше вместо альтер на таблицу с большим обьёмом данных, сразу делать голую таблицу с новой структурой, и потом перекидывать туда данные... можно по частям... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2015, 18:37:23 |
|
||
|
|

start [/forum/topic.php?fid=47&gotonew=1&tid=1833089]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 340ms |

| 0 / 0 |
