когда я повторно индексирую свою базу данных MySQL?

  • NFS для скорости, но Mac NFS не является чистой реализацией в моей книге. При прибытии из Linux/BSD/Solaris это будет изменение темпа и конфигурации. Это - смесь того пространства пользователя FreeBSD и Apple столкновение GUI.
  • SMB хорош для многоплатформенного совместного использования и более быстр, чем AFP. Мое мнение является SMB, самое легкое решение, если Вам нужна скорость, но со стандартным GUI Mac
  • AFP является необходимым при выполнении Машины времени по сетевому диску: Машина времени на AFP NAS
  • Я люблю FUSE, но никогда не выполнял бы его для производственных сервисов класса. Единственное место я видел его, развернулось для производства, находится в VMware Fusion для монтирования изображения.
  • Если это был я, SMB/CIFS полностью для исправности администратора.

2
задан 2 August 2010 в 21:57
6 ответов

Вы не должны должны быть повторно индексировать MySQL кроме случаев повреждения от катастрофического отказа или внезапного выключения питания. Если у Вас есть проблемы блокировки, можно хотеть изучить преобразовывание таблиц MyISAM (или по крайней мере таблиц с самыми большими проблемами конкуренции за блокировку) к InnoDB. Требуется немного больше RAM, но это поддерживает блокировку уровня строки вместо просто блокировки уровня таблицы (среди многих других улучшений).

Вы также захотите преуспеть и выполнить "шоу полный processlist"; удостоверяться, что это не что-то сознательно явно блокировка таблицы, как своего рода резервное копирование.

1
ответ дан 3 December 2019 в 10:23

Как уже отмечено, выбранный механизм устройства хранения данных является работой MySQL влияния основного фактора. Если Вы используете MyISAM или InnoDB, который зависит от Вашей рабочей нагрузки.

Если в Вашем случае ВЫБОРЫ быстры, чтобы сделать и нет большого действия записи к DB, MyISAM не плох вообще. Но если у Вас есть даже умеренное действие записи и некоторые продолжительные ВЫБОРЫ, знать, что MyISAM только поддерживает блокировки уровня таблицы. Во время медленного ВЫБОРА будет поставлено в очередь все действие записи, и это может довольно скоро привести ко всему виду противных проблем.

InnoDB поддерживает блокировки уровня строки, транзакции и мультиуправление версиями, поэтому даже в большой степени смешанные операции чтения-записи не замедлят его почти так же как MyISAM.

Также удостоверьтесь, что независимо от того, что механизм устройства хранения данных используется, он правильно настраивается. Поскольку MyISAM key_buffer_size и table_cache являются самыми важными значениями для настройки, для InnoDB первой вещью корректироваться является innodb_buffer_pool_size.

Но оба из механизмов устройства хранения данных имеют свои собственные глюки: например, только MyISAM поддерживает полнотекстовое индексирование, и табличное пространство InnoDB не уменьшается, таким образом, в активно обновленной таблице, где существует много из, удаляет/обновляет/вставляет продолжение, необходимо вывести, чтобы представить содержание в виде таблицы и высосать их, въезжают задним ходом время от времени.

1
ответ дан 3 December 2019 в 10:23

http://dev.mysql.com/doc/refman/5.0/en/myisamchk.html

После сжатия таблицы с myisampack необходимо использовать myisamchk - запрос для восстановления его индексов.

Но я не знаю, необходимо ли когда-нибудь делать это. Индексы должны быть обновлены автоматически.

0
ответ дан 3 December 2019 в 10:23

Тайм-аут блокировок? MySQL вполне прилично разработан в этом отношении, особенно при использовании механизма InnoDB.
Индексы не должны быть повторно индексированы..., но они должны быть правильно индексированы во-первых.

Если мы говорим о фактических блокировках, как в мертвой блокировке / тайм-аут, необходимо проверить на любого подозрительного LOCK TABLES команда.

1
ответ дан 3 December 2019 в 10:23

Похоже на проблемы со статистикой индекса.

Если вы используете MyISAM, внезапные всплески INSERT могут отбросить статистику в глазах оптимизатора запросов MySQL. Это приведет к тому, что оптимизатор запросов MySQL будет делать очень неверные предположения в планах EXPLAIN запросов SELECT.

Если вы используете InnoDB, ANALYZE TABLE становится совершенно бесполезным.

Пока таблица достаточно мала, ANALYZE TABLE остается все, что вы действительно можете сделать для MyISAM. Перестройка индексов может периодически помогать в таблицах InnoDB.

Пока таблицы не сильно написаны, статистика индекса будет оставаться стабильной, а планы запросов EXPLAIN останутся более согласованными.

Просто помните: как только у вас будет множество INSERT, UPDATE и DELETEs, все ставки отключены для достоверной статистики индекса до следующего перестроения или ANALYZE TABLE.

Что касается периодических тайм-аутов блокировки, вот что следует учитывать: для таблиц InnoDB возможно тайм-аут при тупиках.

SELECT-запросы могут выполнять блокировки для gen_clust_index , также известного как Clustered Индекс.

Вот три вопроса DBA Stack Exchange, которые я внимательно рассмотрел с @RedBlueThing , человеком, который задавал эти вопросы. @RedBlueThing нашел способ ответить на свои вопросы.

Внимательно прочтите эти ссылки. Надеюсь, это поможет.

1
ответ дан 3 December 2019 в 10:23

У меня были похожие проблемы, и в «старые времена» Sql Server я бы изменил запросы на Select with NOLOCK ().

Я решил эту проблему в хранимых процедурах MySQL, используя:

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ;

-- execute select command here such as (this works in stored procs as well): 

SELECT LAST_NAME FROM TEMP WHERE NAME LIKE 'SMITH%' ;

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ;

-Clark Vera

0
ответ дан 3 December 2019 в 10:23

Теги

Похожие вопросы