За последние 24 часа нас посетили 20179 программистов и 1078 роботов. Сейчас ищут 762 программиста ...

Максимальная длина запроса MySQL

Тема в разделе "PHP для новичков", создана пользователем pascal, 26 дек 2006.

  1. pascal

    pascal Активный пользователь

    С нами с:
    22 апр 2006
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    Москва
    Подскажите есть ли ограничение на длину запроса в MySQL? и если есть то какое? 50кб работает точно, а больше?
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Теоретически не помню есть ли ограничение, на практике лучше не юзать большие запросы (в этом нет никакого реального смысла)
     
  3. Anonymous

    Anonymous Guest

    Vladson, ? чего-чего?
     
  4. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    pascal, ограничение есть, на сколько я помню, по умолчанию это 1Мб, но может быть увеличено вплоть до 1Гб.

    Vladson, если смысл не виден, это не значит, что его нет. MySQL между прочим поддерживает хранение типов данных с длинной вплоть до 2^32байт (4Гб).

    pascal, 50кб не может вызвать проблем у субд, если проблемы всётаки есть, то проверяйте синтаксическую корректность SQL запроса
     
  5. xak2

    xak2 Guest

    открой phpMyAdmin и в любой базе нажми импорт, там увидеш:
    Код (Text):
    1. Импорт
    2. Файл для импорта
    3. Месторасположение текстового файла (Максимальный размер: 2,048КБ)
    В настройках MySQL my.ini можно поменять значение на выше или ниже как ты пожедаеш.
    Это если я неошибаюсь 2 097 152 симбола.
     
  6. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    xak2, у ПМА собственные ограничения, он читает весь дамп в оперативную память, парсит и строит отдельные SQL запросы (так что ограничение не связано с максимальной длиной SQL запроса). В результате этого он жрёт памяти в несколько раз больше размера файла и натыкается на лимиты PHP или операционной системы, после чего благополучно прибивается.
    Другими словами, это ограничение связано с ленью разработчиков ПМА написать правильный загрузчик дампов (который впрочем всё равно упрётся в максимальный размер загружаемых по HTTP протоколу файлов, по умолчанию 8мб).
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Приведи хоть один веб-скрипт где требуются запросы размером в 4Гб ?
    большенство скриптов ограничиваются размером вставляемых в форму данных что чаще всего не привышает 30-50кб
     
  8. xak2

    xak2 Guest

    Ты прав.
     
  9. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    Vladson, достаточно привести примеры, где необходимы SQL запросы более 50кб.

    1. Эффективное и быстрое заполнение таблицы запросами INSERT INTO tab_name (x,y)VALUES('q','e'),('r','t'),('y','u'),('i','o'),,,,,...
    2. Безопасное хранение произвольных файлов, файловых архивов и тд и тп. Примером будет PHPbb, vBulletin и др.
     
  10. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Это исключение а не правило, восстанавливать дамп крупных баз нужно не каждый день
    Чем FS не устраивает ?
     
  11. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    Тем, что при наличии в скриптах не критической уязвимости на произвольное подключение пхп файлов, можно загрузить на сервер и подключить к скрипту хороший бэкдор.
     
  12. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Учите мат часть, больше сказать даже нечего

    (подключение пхп файлов это критическая уязвимость в любом случае и её результат можно назвать только одним словом "3.14@$%ц", и базы сотрут, и червей зальют, и даже спам с сервера разошлют)
     
  13. ONK

    ONK Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    281
    Симпатии:
    0
    Адрес:
    СПб
    Vladson, читайте внимательно, если пишут "не критическая", значит не критическая, ничего не сотрут не залью и не разошлю, до тех пор пока не смогут загрузить на сервер свой скрипт. Критической она станет если пхп сконфигурирован с разрешённым allow_url_fopen, да и то если подключение скриптов было уж совсем произвольным.

    Про мат часть я бы с удовольствием послушал, но боюсь вам нечего мне сказать.
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Это в любом случае не ответ на мой вопрос
    Так что ещё раз и подробнее почему файлы надо хранить в базе если можно не изобретать велосипед с квадратными колёсами и использовать созданные для этого механизмы ?
     
  15. IgorZhelez

    IgorZhelez Активный пользователь

    С нами с:
    30 апр 2010
    Сообщения:
    1
    Симпатии:
    0
    а еще Владсон не всегда видит дальше своего носа. и это не потому, что нос у него такой длинный)

    мне вот требуется вставлять в базу огромные портянки поисковых запросов, больше 10 тысяч за раз. так что ограничение на размер sql запроса играет роль. правда, даже дефолтных 2 метров хватает с головой
     
  16. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
  17. zaz

    zaz Активный пользователь

    С нами с:
    7 сен 2011
    Сообщения:
    1
    Симпатии:
    0
    Во первых, узнать какое ограничение на запрос у вашего сервера можно таким запросом
    SHOW VARIABLES LIKE 'max_allowed_packet';

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

    Например, информация в моей базе разделена по темам в разных таблицах.
    И исключительно в очень редких случаях, нужно вывести информацию на основе всех этих таблиц.
    Естественно я объединяю данные из этих таблиц с помощью JOIN.
    Каждое условие на соединение таблиц очень сложное и весит по 5 тыщ символов(5 kb).
    Сейчас у меня 10 таблиц объединяется в JOIN и запрос весит 50 kb, но количество этих таблиц постепенно увеличивается, соответственно запрос тоже становится больше, а кроме этого и сам запрос постепенно модернизируется и становится тяжелее.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    если бы у меня были запросы по 50кб я б наверное руки себе вырвал. хотя поживем - увидим. =)
     
    mkramer нравится это.
  19. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    будет ли igordata ходить без рук или же сменит профессию... :-D
     
  20. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
    некропостеры. блин
     
  21. tarantool

    tarantool Новичок

    С нами с:
    12 фев 2020
    Сообщения:
    1
    Симпатии:
    0
    Мужики, а что в MariaDB 10.4 как-то по другому что ли? Если например пачкой INSERT'ы нескольких картинок в BLOB'ы делаю, почему-то ругается на длину запроса, хотя файлы совокупно меньше максимальной длины. Может там распухает при экранировании бинарные данные?