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

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

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


person Gagan93    schedule 28.11.2014    source источник


Ответы (1)


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

Очевидно, у вас есть проблема с сетевой задержкой и общим временем отклика вашего веб-сервера/сервера базы данных на 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 для синтаксиса и т. д.

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

person J Henzel    schedule 01.12.2014