2013-05-29 2 views
3

Я пишу простой инструмент для проверки дубликатов файлов (например, файлов с одинаковыми данными). Механизм состоит в том, чтобы генерировать хэши для каждого файла с использованием алгоритма sha-512, а затем хранить эти хэши в базе данных MYSQL. Я храню хэши в двоичном (64) уникальном столбце, отличном от нуля. Каждая строка будет иметь уникальный бинарный хэш и используется для проверки файла, дублируется или нет.Какой индекс следует использовать в столбце двоичного типа данных mysql

- Мои вопросы -

  1. Могу ли я использовать индексы на двоичном столбце, моя по умолчанию таблица сортировки latin1 - по умолчанию параметры сортировки?

  2. Какой механизм индексирования должен использовать Btree или Hash для получения высокой производительности? Мне нужно обновить или добавить 100 строк в секунду.

  3. Какие еще вещи я должен позаботиться, чтобы получить лучшую производительность?

ответ

8
  1. Могу ли я использовать индексы на двоичном столбце, моя по умолчанию таблица сортировки latin1 - по умолчанию параметры сортировки?

    Да, вы можете; сопоставление применимо только для типов данных символов, а не для двоичных типов данных (оно определяет, как должны быть упорядочены символы) — также следует помнить, что latin1 является кодировкой символов , а не сортировкой.

  2. Какой механизм индексирования должен использовать Btree или Hash для получения высокой производительности? Мне нужно обновить или добавить 100 строк в секунду.

    Обратите внимание, что хэш-индексы доступны только с двигателями хранения MEMORY и NDB, так что вы не можете даже есть выбор.

    В любом случае, как правило, вы можете соответствовать вашим критериям эффективности —, хотя для этого конкретного приложения я не вижу преимущества использования B-Tree (который упорядочен), тогда как Hash даст лучшую производительность. Поэтому, если у вас есть выбор, вы можете также использовать Hash.

    Для получения дополнительной информации см. Comparison of B-Tree and Hash Indexes.

  3. Какие еще вещи я должен позаботиться, чтобы получить лучшую производительность?

    Зависит от вашего определения «наилучшая производительность» и вашей среды. В общем, помните принцип Кнута «преждевременная оптимизация - корень всего зла»: то есть оптимизируйте только тогда, когда вы знаете, что возникнет проблема с самым простым подходом.

+0

Я использую механизм хранения Innodb для таблицы хранения хэша, поэтому механизм индексации HEAP не будет доступен для него. Я думаю, индексация Btree не будет плохой. –

 Смежные вопросы

  • Нет связанных вопросов^_^