Какой из них быстрее, записать в файл или вставить в mysql?

В настоящее время я вставляю IP-адрес каждого посетителя в БД.

insert into visitor(IP) values($ipaddress) 

Если одновременно находится около 50 посетителей, загрузка ЦП становится высокой. Однако есть и другой способ записать IP посетителя, добавив его в какой-нибудь файл TXT.

fwrite($file,$ip); 

Если fwrite to file работает лучше, чем вставка в DB, ​​я сделаю это.

Оценить это ...?

deceze 17.12.2018 09:34

Основным фактором здесь является структура данных, независимо от того, будут ли операции записи и чтения последовательными или случайными. Добавление к файлу может быть даже быстрее в некоторых ситуациях, чем использование удаленного сервера базы данных (при условии, что у вас быстрая файловая система), но это, безусловно, изменит момент, когда вы попытаетесь вставить строку в содержимое файла вместо ее добавления. То же самое и для чтения: если вы всегда читаете весь контент, тогда файл может быть быстрее, если у вас нет накладных расходов на синтаксический анализ, во всех других ситуациях база данных будет явным победителем.

arkascha 17.12.2018 09:43

@arkascha, когда я в последний раз тестировал, запись небольшого количества данных в файл происходит быстрее, чем установка соединения с базой данных MySQL, даже если она локальная. Не обращайте внимания на фактическую операцию записи. Пока вы не столкнетесь с проблемами блокировки, запись файла будет медленной.

Abhi Beckert 17.12.2018 10:57

@AbhiBeckert Следует отметить два момента: 1. Это не противоречит тому, что я сказал выше: проблема с использованием простых файлов в качестве хранилища данных заключается не в фактическом открытии, а в обработке данных. Это может быть тривиально, если оно выполняется последовательно и синтаксический анализатор не требуется, но становится сложным и требует много времени, поскольку вам нужно анализировать, обрабатывать, повторно собирать и записывать весь файл для каждой операции, очевидно, тогда такие решения не работают. И 2. открывается соединение с сервером базы данных однажды, обычно оно постоянное ...

arkascha 17.12.2018 11:20

Поподробнее, пожалуйста. Это через веб-сервер? Через PHP? Через прямой вход в MySQL? Доступен ли IP-адрес в веб-журнале? Система мониторинга TCP? Другой? Тебя не интересуют дупсы? Хотите считать дубли? И т. Д. И т. Д. Сколько вставок в минуту в часы пик? Что вы будете делать с результатами - пригодится ли навороченный SELECT? Можно ли иметь 24-часовую задержку перед считыванием данных? Если нет, то какая-то более короткая задержка? Я считаю, что для разных ситуаций есть разные решения.

Rick James 17.12.2018 19:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
5
545
1

Ответы 1

В условиях низкой загруженности fwrite() работает намного быстрее, поскольку это более простой процесс.

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

В зависимости от вашего сервера у вас могут быть некоторые сбои с fwrite () при высокой нагрузке - обязательно посмотрите, как работает блокировка, и различные флаги fopen ().

Если вы выбираете вариант с базой данных, изучите варианты хранения и индексации, а также insert ignore. Все это значительно повлияет на производительность.

Другие вопросы по теме