производительность - единственное соединение выбирает по сравнению с несколькими простые выборы

Пределы загрузки - это функция безопасности. Без них программа-изгои или злоумышленник могут доставлять ваш сервер непрерывным потоком данных до тех пор, пока ваш жесткий диск не будет заполнен, что сделает весь сервер непригодным.

С точки зрения безопасности это не особенно полезно для ограничьте данные исходящими и, насколько я знаю, ни библиотека Curl, ни PHP не накладывают никаких ограничений.

Ваши симптомы указывают на то, что проблема возникает на целевом сервере. Поскольку у вас есть доступ к нему (вы называете получение пустого $_POST), я предлагаю вам проверить пределы загрузки. Это то, что вы можете делать (и часто меняться) самостоятельно, вам не нужно спрашивать администратора сервера. Основные задействованные директивы включают в себя:

  • post_max_size
  • upload_max_filesize
  • max_file_uploads
  • max_input_time

Вы можете проверить их с помощью phpinfo() или ini_get(), и вы можете изменить их обычным способом .

23
задан Joel Coehoorn 18 December 2008 в 13:44
поделиться

8 ответов

Одно соединение, как правило, превосходит несколько одиночных выборов. Однако есть слишком много разных случаев, которые соответствуют вашему вопросу. Неразумно объединять их в одно простое правило.

Более важно, что следующему программисту будет легче понять и пересмотреть единственное соединение, при условии, что вы и следующий программист «говорите на одном языке» при использовании SQL. Я говорю о языке наборов кортежей.

И в равной степени важно то, что физическое проектирование базы данных и проектирование запросов должны быть в первую очередь сосредоточены на вопросах, которые приведут к улучшению скорости на десять, а не к увеличению скорости на 10%. Если бы вы делали тысячи простых выборов вместо одного соединения, вы могли бы получить десять за одно преимущество. Если вы делаете три или четыре простых выбора, вы не увидите большого улучшения, так или иначе.

14
ответ дан Walter Mitty 29 November 2019 в 01:16
поделиться

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

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

Это позволяет Вам фокусироваться на своей проблемной области.

11
ответ дан S.Lott 29 November 2019 в 01:16
поделиться

Существует только один способ знать: Время это.

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

Недавно, у меня было приблизительно 100 избранных операторов, которые я изменил в СОЕДИНЕНИЕ в моем коде. С несколькими индексами я смог пойти с 1 минуты приблизительно до 0,6 секунд.

21
ответ дан csl 29 November 2019 в 01:16
поделиться

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

6
ответ дан HLGEM 29 November 2019 в 01:16
поделиться

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

у меня был медленный и сложный запрос с большим количеством соединений. Тогда я подразделил его на 2 или 3 менее сложных запроса. Увеличение производительности было удивительно.

, Но в конце, "это зависит", необходимо знать whereВґs узкое место.

5
ответ дан DonOctavioDelFlores 29 November 2019 в 01:16
поделиться

Если Вы используете SQL Server (я не уверен, доступно ли это с другим RDBMSs), я предложил бы, чтобы Вы связали план выполнения Вами результаты запроса. Это даст Вам способность видеть точно, как Ваш запрос (запросы) выполняется и что вызывает какие-либо узкие места.

, Пока Вы не знаете то, что на самом деле делает SQL Server, я не рисковал бы предположением, о котором запрос лучше.

0
ответ дан Andrew Hare 29 November 2019 в 01:16
поделиться

Как был сказан прежде, нет никакого правильного ответа без контекста.

ответ на это зависит от (от вершины моей головы):

  • объем присоединения
  • тип присоединения
  • индексация
  • объем повторного использования Вы могли иметь для любой из отдельных частей, к которым присоединятся
  • объем данных, который будет обработан
  • установка сервера
  • и т.д.
1
ответ дан JoeBloggs 29 November 2019 в 01:16
поделиться

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

, Если существуют слева/справа внешние объединения в этом случае, то используйте несколько выборов.

Все это зависит от Вашего размера дб, Вашего запроса, индексы (которые включают первичные и внешние ключи также)... Нельзя достигнуть на заключении с да/нет по Вашему вопросу.

0
ответ дан Samiksha 29 November 2019 в 01:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: