Для просмотра ссылки Войди или Зарегистрируйся
Конкретный пример под твои задачи. Сервер MySQL предварительно перенеси на SSD либо его базу туда.
Попробовал сделать так:
PHP:
INSERT INTO Ttemp SELECT DISTINCT * FROM T;
Сервер создаёт временную таблицу и индекс к ней и начинает искать уникальные значения.
Так вот, пока таблица индекса в ОЗУ - скорость проверки нормальная (примерно 5-7 МБ/с на SSD диске), но как только индексный файл становится больше 2 ГБ его сервер перекидывает из ОЗУ на SSD и скорость перебора падает до 200 КБ/с, а при весе 100 гигов это 5 дней работы.
На каждые 7 гигов MYD данных выходит 1 гиг MYI, что на компе с 16-20 ГБ ОЗУ можно держать весь индекс в ней и выполнить перебор за разумное время.
Проблема в том, что MYSQL не даёт запускать сервер с конфигом read_buffer_size больше 2 ГБ, м.б. кто знает как весь индексный файл держать в ОЗУ?
PHP:
160305 23:59:09 [Warning] option 'read_buffer_size': unsigned value 6291456000 adjusted to 2147479552
160305 23:59:09 [Warning] option 'read_rnd_buffer_size': unsigned value 6291456000 adjusted to 2147483647
последнее решение реально рабочее, но есть одна фишка время работы скрипта, на такое огромное количество может и не хватить стандартного времени
А причём тут время работы скрипта?
Запрос сразу на сервер шлётся через консоль, все ограничения по времени сняты т.к. счёт идёт на часы.
Остался вопрос с ОЗУ: разница 5-7 часов если индекс в ОЗУ и 5 дней если индекс на SSD.
ну мои первые мысли запрос sql в phpmyadmin, а процесс работы скрипта может превысить максимальное время установленного в настройках (вроде 30 сек по памяти - дефолтовские настройки) на 1 лярд конечно не хватит но и в настройках могут быть разные размеры.
Через какие вы там консоли отправляете запросы где нет ограничений так и не понял, да и врятли пойму
и вот одно интересно этож какая нагрузка, один раз пытался похожую штуку сделать на пхпмайадмин и там сработала защита хостера от ддос через 15 минут
Ну это всё выполняется на MYSQL сервере запущенном на локальном компе.
Нагрузка, кстати, небольшая проц Core i5 2,3 ГГц процентов на 30 загружен, а вот с оперативкой затык.