mysql — обновление базы данных PHP замедляет соединение со встроенным устройством

У меня есть встроенная система, то есть в основном микроконтроллер на основе ATMEGA с модулем GSM. Модуль GSM использует GPRS-соединение SIM-карты для отправки запроса GET на веб-страницу на моем сервере. Проще говоря, это то же самое, что человек, открывающий эту веб-страницу со своего мобильного устройства.
Когда эта веб-страница открывается, ничего особенного не происходит, я просто извлекаю параметры GET и обновляю базу данных. Теперь проблема приходит. База данных подключена к серверу GoDaddy, и когда я отправляю запрос на обновление с устройства GSM, она зависает на 4-5 секунд. Есть ли другой способ, которым я могу обновить базу данных и сэкономить свое время?

Кроме того, я хотел бы знать, для онлайн-базы данных, что занимает больше времени,
* Инициирование соединения с базой данных, или
* используя запрос UPDATE для обновления таблицы?

0

Решение

Здесь много чего происходит, и у вас могут быть проблемы во многих местах. Слишком мало информации, чтобы решить проблему, но вот некоторые возможные места, чтобы посмотреть.

Очевидно, у вас есть проблема с задержкой в ​​сети и общим временем отклика от вашего веб-сервера / серверов баз данных на GoDaddy. Мой первый вопрос был бы, как ответ от MC сравнивается с запросом на получение через веб-страницы.

Чтобы конкретно ответить на ваш вопрос — инициирование соединения с базой данных обычно является наиболее дорогостоящей частью транзакции. Я не уверен, что вы используете на стороне базы данных, поэтому я не могу указать вам конкретные ресурсы. Я предполагаю, MySQL? Если это так, взгляните на https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection для предложений. В своей собственной базе данных я склонен настраивать их на производительность. На GoDaddy вы можете быть весьма ограничены в том, что вы можете сделать.

Однако я собираюсь немного уточнить то, что я сказал выше. Как правило, обновление базы данных не должно быть таким медленным. Мы могли бы иметь дело с плохим дизайном базы данных или с очень большими таблицами, которые также должны иметь обновления индексов. Опять что-то подумать в вашем конкретном случае. Другой момент, на который следует обратить внимание, это то, что вы можете делать обновления, как показано ниже:


update myTable set myField = 1 where somesensor = 'a';
update myTable set myField = 1 where somesensor = 'b';
update myTable set myField = 1 where somesensor = 'c';
.....

и в зависимости от количества обновлений, которые вы делаете, как вы устанавливаете соединение и т. д. и остальной части вашей конкретной ситуации ….. Если вы используете MySQL, взгляните на этот пример Как массово обновить данные MySQL одним запросом? для возможных идей. Оцените это!

Я бы предложил составить план объяснения, чтобы увидеть, что происходит, и узнать, можете ли вы определить причину проблемы (проверьте свою версию MySQL). Увидеть http://dev.mysql.com/doc/refman/5.7/en/explain.html для синтаксиса и т. д.

Там действительно недостаточно информации, чтобы сказать точно, но, возможно, это даст вам некоторые идеи. Удачи!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]