Ви можете використовувати таблиці злиття, однак вони більш застарілі у версії 4.x. З огляду на те, що ваше додаток розділено вручну, оскільки це а) ви працюєте зі справді старою версією; б) оригінальний розробник не знав про розділи таблиці.
Якщо коротше, якщо ви працюєте з версією 5.1+, ви можете дозволити mysql зробити цей розділ за вас. Дивіться сторінку
http://dev.mysql.com/doc/refman/5.1/en/partitioning.html Якщо ви використовуєте 5.5, слід перевірити ці конкретні документи, оскільки ви знайдете деякі відмінності.
Є багато переваг у розділення. Однак це дійсно залежить від набору даних, що знаходиться під рукою, моделей доступу та способу їх індексації. Також майте на увазі, що мої наступні коментарі знаходяться в контексті розбиття mysql 5+, НЕ старих таблиць злиття mysql; хоча вони іноді обговорюються з точки зору розділів.
Деякі приклади:
- Пряме (або хеширование) пряме базування на основі клавіші пошуку, яка часто доступна. Якщо ви майже завжди шукаєте первинний або інший унікальний ключ, тоді mysql може скоротити простір пошуку в коефіцієнті, скільки коли-небудь у вас розділів. Зауважте, однак це може бути згубним, якщо ви розділите один ключ, а потім часто шукаєте інший ключ. Якщо ви шукаєте за ключем, дані не розділяються, тоді він повинен БІЛЬШЕ шукати під час пошуку (по одному для кожного розділу, b / c відверто кажучи, він не знає, де дані)
- Поміркуйте, чи були у вас тимчасові набори записів, які зростають за датою, і ви періодично обрізаєте попередній місяць. Якщо ви розділяєте за датою, ви можете просто скинути розділ, який так само швидко, як і опустити таблицю, незалежно від величини. Якщо ви повинні обрізати таку таблицю за датами, вам доведеться видати один або кілька DELETE запитів, де видаляється кожен окремий рядок. Мінус цього полягає в тому, що mysql не автоматично створює нові розділи, як тільки ви досягли максимальної дати, яку ви врахували в цьому сценарії; вам потрібні додаткові сценарії технічного обслуговування, побудовані на вашій частині, щоб додати розділи у міру необхідності.
- Якщо ви використовуєте перевірку myisam, то відновлення коштів відбувається набагато швидше. Розглянемо таблицю мізаму 100G. Якщо ви хочете відновити збійну таблицю, вам знадобиться приблизно 100 Г запасного місця на диску. Якби він був розділений на 10 різних фрагментів однакового розміру, тоді вам потрібно лише 10 Г місця (і менше пам'яті key_sort_buffer для швидкого відновлення); але потрібно було б зробити ітерацію для кожного розділу.
Отже, підсумовуючи, загальний підхід таблиць розділення може запропонувати багато переваг. Однак це не чарівна куля, яку слід застосовувати наосліп, без огляду на доступ до шаблонів і як , саме ви розділяєте.
Я міг би уявити ситуації, коли бажаний розділ дуже специфічний для програми, і було б краще, щоб така логіка знаходилася в шарі програми. Однак, враховуючи ваш прямий опис модуля 10, це не схоже на такий випадок.
EDIT
Складаючи опис, я забув, що ви заявили, що ваша таблиця становить 100 К рядків. З урахуванням повної схеми вашої таблиці та її середньої довжини рядків важко сказати напевно, але загалом це звучить середнього розміру навіть для скромного обладнання. У той же час, якщо це не спричиняє проблем, як зараз, чи в осяжному майбутньому, тоді не витрачайте час і не вводьте ризик, змінюючи його.