Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > На самом деле это не так. Точнее не совсем так, о чем нам и говорит > первый абзац в разделе "38.7. Cursors" в документации. Я написал 2 > тестовых скрипта, первый тянет данные одним запросом, второй - через > курсоры. Второй использует в разы меньше памяти. Если интересует - могу > выложить текст скриптов, сами убетитесь или опровергните мое утверждение. Ну давайте. Я вот не могу представить, почему бы это могло быть так. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 16:35 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
MasterZiv, тестовыя таблица temp из 3114832 записей. В первом случае выполняем запрос целиком: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Второй вариант, загружаем данные в курсоре по 100000 записей: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. По-моему, результат на лицо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 09:26 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > MasterZiv, тестовыя таблица temp из 3114832 записей. > В первом случае выполняем запрос целиком: Это вы не так смотрите. Это вы FETCH тестируете и PHP. PHP я бы вообще исключил бы из эксперимента, простой консолькой работал бы. Ну и в одном случае вы ждёте выполнения запроса до конца, и засасывания всех его результатов в память. А во втором случае - не ждёте до конца, получаете только 100 тыщ записей, ну и памяти меньше, потому что получаете и выбрасываете тут же. Не, в общем, не убедили. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 16:45 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
MasterZiv, либо вы себе противоречите, либо мы друг друга не поняли. Что касается php, то изначально я сказал, что буду писать на php или python. Теория с командной строкой не канает - нужно проверять в том, в чем будешь работать. Хотя с командной строкой будет так же ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 19:36 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > MasterZiv, либо вы себе противоречите, либо мы друг друга не поняли. Что > касается php, то изначально я сказал, что буду писать на php или python. Вы можете в этом вашем PHP или питоне (думаю, в питоне точно можно) вы-FETCH-ивать ПО ОДНОЙ строке ? Если сможете, на клиенте вообще практически память заниматься не будет. > Теория с командной строкой не канает - нужно проверять в том, в чем > будешь работать. Хотя с командной строкой будет так же ;) Нужно думать мозгами, а не проверять. Я вам говорю, что эти два способа ничем друг от друга не отличаются. Память жрёт ваш PHP, куда вы запихиваете ВЕСЬ набор данных в одном случае, и 100 тыщ записей в другой. А жрать оно не должно ВООБЩЕ ничего в нормально написанном приложении (для вашей конкретной цели). Возмите выполните в psql тот же запрос, и поглядите сколько он будет сжирать памяти, я думаю, вы не заметите большой разницы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 22:12 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > MasterZiv, либо вы себе противоречите, либо мы друг друга не поняли. А, я понял, почему по вашему мнению я сам себе противоречу. Я вообще про производительность клиента не говорил. Только про серверную. Вы же меня грузите клиентской производительностью. А она тут вообще роли не играет, если всё нормально делать. Производительность суммарная будет определяться производительностью чтения PSQL-ем данных из таблицы и записи вашим клиентом туда, куда вы там записываете (например, диска). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2008, 22:16 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
MasterZiv Нужно думать мозгами, а не проверять. Я вам говорю, что эти два способа ничем друг от друга не отличаются. Память жрёт ваш PHP, куда вы запихиваете ВЕСЬ набор данных в одном случае, и 100 тыщ записей в другой. А жрать оно не должно ВООБЩЕ ничего в нормально написанном приложении (для вашей конкретной цели). Возмите выполните в psql тот же запрос, и поглядите сколько он будет сжирать памяти, я думаю, вы не заметите большой разницы. Память жрёт не PHP, а клиентская библиотека libpq. В случае с psql числа будут примерно такими же. И вообще, MasterZiv , уровень понтов в твоих сообщениях значительно превосходит уровень понимания вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 12:09 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
MasterZiv, вы бы сначала проверили, а затем уже говорили. psql - это простейшая оболочка, тот же клиент. И она тоже получает все данные за раз. Что касается сервера - он отдает то, что у него попросили. Попросили 100 записей - он отдал 100 записей, попросили все - он отдал всё. Если вы считаете, что запрашивать данные с сервера по одной строке - это правильное решение, то вы, мягко говоря, ошибаетесь. Это не есть "нормально написанное приложение". И не важно, какой язык. хоть си, хоть php. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 14:11 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Sad Spirit wrote: > Память жрёт не PHP, а клиентская библиотека libpq. В случае с psql числа > будут примерно такими же. В общем-то разница небольшая. Но я думаю всё же, что это именно PHP. > И вообще, *MasterZiv*, уровень понтов в твоих сообщениях значительно > превосходит уровень понимания вопроса. Да пожалуйста, не хочешь - не слушай. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 20:20 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > MasterZiv, вы бы сначала проверили, а затем уже говорили. psql - это > простейшая оболочка, тот же клиент. И она тоже получает все данные за раз. Всё же может быть построчно... > Что касается сервера - он отдает то, что у него попросили. Попросили 100 > записей - он отдал 100 записей, попросили все - он отдал всё. > Если вы считаете, что запрашивать данные с сервера по одной строке - это > правильное решение, то вы, мягко говоря, ошибаетесь. Это не есть Да,правильное. Запрашивать, обрабатывать, и освобождать память под следующие данные. Так именно и работают высокопроизводительные утилиты типа выгзузки данных. Можно обрабатывать также небольшими блоками, но это на самом деле всё равно, обычно API работы с базой данных всё равно работает буферами по N строк, по одной строке никто не дёргает. > "нормально написанное приложение". И не важно, какой язык. хоть си, хоть > php. Ну, PHP-то здесь естественно ни при чём. Там можно было бы делать fetch в курсоре по одной записи (по 10 записей). Или какой-то другой вызов API делать, который не тащит весь набор на клиента. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 20:24 |
|
||
|
Получение данных из большой таблицы
|
|||
|---|---|---|---|
|
#18+
Скрябин Дмитрий wrote: > MasterZiv, вы бы сначала проверили, а затем уже говорили. psql - это > простейшая оболочка, тот же клиент. И она тоже получает все данные за раз. > Что касается сервера - он отдает то, что у него попросили. Попросили 100 Ну, что ж вы мне тут рассказываете ? Вот кусок кода PSQL Код: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. правда, оно там курсор серверный тоже явно использует. Странно, почему. Ну да ладно, ведь может же по одной строчке. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 21:11 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35603089&tid=2003953]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 448ms |

| 0 / 0 |
