Работа Mysql на 6 миллионах таблиц строки

Краткий ответ:

Хеширование - создание поля проверки на некоторых данных (для обнаружения, когда данные изменяются). Это - один способ, которым функция и исходные данные не могут быть получены из хеша. Типичные стандарты для этого являются SHA-1, SHA256 и т.д.

, Путаница - изменяет Ваши данные/код для смущения кого-либо еще (никакая реальная защита). Это может или не может освободить некоторые исходные данные. Нет никаких реальных стандартов для этого.

Шифрование - использование ключа для преобразования данных так, чтобы только те с корректным ключом могли понять его. Зашифрованные данные могут быть дешифрованы для получения исходных данных. Типичные стандарты являются DES, TDES, AES, RSA и т.д.

16
задан JulianR 11 July 2009 в 21:58
поделиться

4 ответа

Вы хотите убедиться, что запрос будет использовать ТОЛЬКО индекс, поэтому убедитесь, что индекс охватывает все поля, которые вы выбираете. Кроме того, поскольку это запрос диапазона, вам необходимо сначала указать венид в индексе, поскольку он запрашивается как константа. Поэтому я бы создал и проиндексировал так:

ALTER TABLE events ADD INDEX indexNameHere (venid, date, time);

С этим индексом вся информация, необходимая для выполнения запроса, находится в индексе. Это означает, что, как мы надеемся, подсистема хранения может извлекать информацию, не обращаясь к самой таблице. Однако MyISAM может быть не в состоянии сделать это, поскольку он не хранит данные в листьях индексов, поэтому вы можете не получить желаемого увеличения скорости. В этом случае попробуйте создать копию таблицы и используйте для этой копии механизм InnoDB. Повторите те же шаги и посмотрите, получится ли у вас значительное увеличение скорости. InnoDB действительно сохраняет значения полей в листах индекса и позволяет покрывать индексы.

Теперь, надеюсь, вы увидите следующее, когда объясните запрос:

mysql> EXPLAIN SELECT date, time FROM events WHERE venid='47975' AND date>='2009-07-11' ORDER BY date;

id  select_type table  type  possible_keys        key       [..]  Extra
1   SIMPLE   events range date_idx, indexNameHere indexNameHere   Using index, Using where
42
ответ дан 30 November 2019 в 15:52
поделиться

Попробуйте поместить индекс в столбец venid .

1
ответ дан 30 November 2019 в 15:52
поделиться

Попробуйте добавить ключ, который охватывает вениду и дату (или наоборот, или и то, и другое ...)

2
ответ дан 30 November 2019 в 15:52
поделиться

Я полагаю, что таблица с 6 миллионами строк должна быть оптимизирована с помощью вполне обычных методов.

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

Вам нужно убедиться, что вы настроили mysql для эффективного использования оперативной памяти. Если вы используете 32-битную ОС, не делайте этого. Если вы используете MyISAM, настройте свой ключевой буфер, чтобы использовать значительную, но не слишком большую часть оперативной памяти.

В любом случае вы захотите провести повторное тестирование производительности на оборудовании производственного уровня.

2
ответ дан 30 November 2019 в 15:52
поделиться
Другие вопросы по тегам:

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