2009-09-07 7 views
4

Можно ли ограничить размер (в размере или строках диска) одной таблицы mysql?Ограничение размера таблицы mysql

Если это невозможно, то какой самый простой способ запустить несколько двигателей mysql на одном физическом компьютере? (Мой план - установить один файл данных экземпляра mysql на отдельный раздел диска).

+0

Какая платформа? Linux, Windows, * BSD ... – LiraNuna

+0

Windows и Linux. – ripper234

ответ

0

Если у вас (относительно) небольшой объем данных, вы можете попытаться создать таблицу с помощью механизма хранения MEMORY. У этого есть конфигурируемый size limit, но, конечно, вы ограничены объемом доступной памяти на вашем ящике.

Если для вашего размера данных требуются таблицы на основе дисков, то одним прямым способом ограничить размер таблицы будет выполнение задания, которое периодически очищает части таблицы. Вероятно, это лучший вариант, чем использование небольшого раздела - многие команды MySQL плохо себя ведут, когда диск заполнен.

Кроме того, вы можете запустить столько экземпляров MySQL на своем компьютере, сколько хотите - если вы подключаетесь через TCP/IP, вам просто нужно назначить каждому номер другого порта.

+0

Я хочу жесткий предел, чтобы убедиться, что переполнение в одной таблице (скажем, протоколирование) не мешает производительности других таблиц. – ripper234

0

Вы можете использовать утилиту myisampack, которая создает сжатые таблицы (но только для механизма MyISAM). Таблицы становятся доступными только для чтения со статическими типами данных.

0

Если они являются таблицами MyISAM, игрушка может указать каталоги, в которые будут храниться файлы данных и индекса.

В соответствии с пользовательским интерфейсом:

Data Directory: ___________________ Directory where to put the tables data file 
Index Directory: __________________ Directory where to put the tables index file 

This works only for MyISAM tables and not on some operating systems (Windows) 

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

1

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

0

Чтобы обеспечить соблюдение квот, существует несколько разных подходов. Я думаю, что найденный on this site, вероятно, самый звук, с которым я столкнулся.

Чтобы напрямую подключить mysql к различным каталогам данных, поместите символические ссылки в настройку linux или попробуйте использовать файл конфигурации. MySQL позволит вам указать, где файлы базы данных будут сохранены через эти файлы conf, читайте здесь for windows setup или найдите информацию о my.cnf

Удачи вам в том, что я поздно, поэтому я отправлюсь спать.

1
  1. Квоты: не поддерживаются непосредственно MySQL. вы можете эмулировать что-то, используя файловую систему, которая поддерживает котировку пользователя для каждого пользователя, устанавливая права собственности на файлы для ваших пользователей и устанавливая квоту для каждого пользователя на уровне ОС. обратите внимание, что по умолчанию InnoDB использует один файл таблицы для всех баз данных, но есть возможность сказать ему использовать file per table. однако - обратите внимание, что это может повлиять на производительность.
  2. Выполнение нескольких экземпляров на одном компьютере возможно с использованием другого конфигурационного файла для каждого сервера.

, где на самом минимуме, вы хотите изменить те от от пользователя к пользователю:

[mysqld] 
port=PORT_NUMBER 
datadir=/home/USER/mysql 
tmpdir=/home/USER/tmp/mysql 

начать Sever, запустите:

mysqld_safe --defaults-file=user_specific_my.cnf 

остановить сервер, пробег:

mysqladmin -u root -pROOT_PASSWORD --port=3307 -h 127.0.0.1 shutdown 

для подключения к серверу, пользователь должен использовать:

mysql --port=USER_PORT -h 127.0.0.1 -pPASSWORD