Что быстрее для вставки и извлечения, базы данных MySQL или простого файла csv - PullRequest
1 голос
/ 05 мая 2020

CRM обращается к моему серверу через веб-перехватчики не менее 1000 раз, и я не могу обработать все запросы сразу. Поэтому я думаю о том, чтобы сохранить его (в файле Mysql или csv), а затем обрабатывать по одной записи за раз.

какой метод быстрее, если есть около 100 000 записей, и мне нужно обработать одну запись в время.

Ответы [ 3 ]

0 голосов
/ 05 мая 2020

Доступны разные методы для выполнения такой операции:

  1. Вы можете сохранить данные в MySQL и написать сценарий PHP, который будет получать запрос из базы данных MySQL и обрабатывать по одному. Этот сценарий вы можете запустить автоматически с помощью crontab или планировщика после указанного c интервала.

  2. Функциональность настраиваемых очередей можно реализовать, используя PHP + MySQL

0 голосов
/ 05 мая 2020

Похоже, вам нужно следующее:

1) Таблица входящей очереди, в которую все новые строки вставляются без обработки. Правильно настроенная таблица InnoDB должна быть способна обрабатывать 1000 INSERT в секунду, если вы не используете Raspberry Pi или что-то подобное, не указанное. Вероятно, вам следует разбить это на разделы, чтобы вместо удаления записей после обработки вы могли вместо этого удалять разделы (ALTER TABLE ... DROP PARTITION намного, намного дешевле, чем большая операция DELETE).

2) A запланированное событие, которое обрабатывает данные в фоновом режиме, возможно, в пакетном режиме, и очищает исходную таблицу очереди.

0 голосов
/ 05 мая 2020

Как вы точно знаете, CSV не позволит вам создать indexes для быстрого поиска. Установка индексов для столбцов таблицы действительно значительно ускоряет поиск, и вы не можете игнорировать этот факт.

Если вам нужны все данные из single table (например, конфигурация приложения), CSV работает быстрее, иначе нет. Следовательно, для простой вставки и поиска со сканированием таблицы (не на основе индекса) CSV работает быстрее. Также учтите, что обновление или удаление из CSV нетривиально. Если вы используете CSV, вам нужно быть очень осторожным, чтобы правильно обрабатывать несколько потоков / процессов, иначе вы получите неверные данные или повредите свой файл.

Mysql предлагает множество capabilities, таких как SQL запросы, транзакции, манипулирование данными или одновременный доступ, но CSV определенно не для этих вещей. Mysql, как упомянула Симоне Россайни, также является safe. Вы не можете упускать из виду и этот факт.

СВОДКА

Если вы выбираете simple inserting и table-scan (non-index based) searches, CSV определенно быстрее. Тем не менее, у него есть много недостатков, если сравнить его с бесчисленными возможностями MySql.

...