• "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    martin74ua
    @martin74ua Куратор тега Компьютерные сети
    Linux administrator
    Как администратор - могу дать только такой совет. Или работайте по установленным правилам, или не работайте там совсем. Если вы будете обходить систему - тем самым вы привлечете к себе внимание, и если возникнут какие то вопросы и проблемы - вы будете одним из первых подозреваемых. Если вы все шифруете - аналогично. На работе - работать.
    Ответ написан
    3 комментария
  • "Большой Брат" в офисе, за интернет-трафиком следят. Как можно обойти эту систему?

    @kgbplus
    Если вы смогли принести свой ноутбук из дома, воткнуть его в произвольную розетку и получить доступ к ресурсам сети и выйти в интернет, то можете не бояться такого "админа" - это не админ.
    Ответ написан
    4 комментария
  • Как работают агрегатные функции?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В стандарте при использовании агрегатных функций каждое поле выборки, ORDER BY и HAVING должно быть либо результатом агрегатной функции, либо входить в GROUP BY. Таким образом приведённый вами запрос в стандарте недопустим.
    MySQL, до последней версии, допускал нестандартное использование агрегирования, выбирая для неагрегированых полей первое попавшееся значение. Начиная с версии 5.7 MySQL начал требовать соблюдения стандарта, и приведённый вами запрос выдаст ошибку. Вернуться к старым настройкам можно отключив режим ONLY_FULL_GROUP_BY в настройках или явно используя агрегатную функцию ANY_VALUE() на полях, которые раньше не агрегировались. Ваш запрос в этом случае будет выглядеть как
    SELECT ANY_VALUE(`id`), ANY_VALUE(`name`), ANY_VALUE(`age`), COUNT(*) 
      FROM `student`;

    Поскольку в запросе не указано, по каким полям проводить группировку, MySQL группирует все строки в одну. Если использовать GROUP BY <список полей>, то будут группироваться строки с одинаковыми значениями указанных в списке полей. Так запрос
    SELECT `age`, COUNT(*) 
      FROM `student`
      GROUP BY `age`;

    выдаст
    +------+----------+
    | age  | COUNT(*) |
    +------+----------+
    |  18  |    2     |
    |  17  |    1     |
    | NULL |    1     |
    +------+----------+
    Ответ написан
    Комментировать
  • Как проверить в данной задаче можно ли делить чисто на 3 последнюю цифру?

    Всё настолько просто, что проще и не придумаешь: число делится на 3, когда сумма его цифр делится на 3 без остатка. Поэтому число 13 не делится.
    Ответ написан
    Комментировать
  • Иерархические запросы. Генерация значений. Как использовать запрос INSERT INTO....?

    @Dronablo
    Oracle performance geek
    INSERT INTO MYTAB(ID)
    SELECT LEVEL FROM DUAL CONNECT BY LEVEL<=100;
    Ответ написан
    Комментировать
  • Процедура или функция?

    @d-stream
    Готовые решения - не подаю, но...
    Совсем упрощенно:

    Функция - когда надо получить какой-нибудь результат. Например очистка номера телефона от паразитных символов (скобки, дефисы и т.п.)

    Процедура - когда надо выполнить какие-либо действия. Как образчик абстрактный документ со строками, разные действия со строками документа (добавление, удаление, изменение) и пересчет документа.

    MySQL не самый показательный в этом плане, в других вариантах - функции и процедуры используются активно.
    Ответ написан
    Комментировать
  • Какую Linux выбрать в VirtualBox?

    selivanov_pavel
    @selivanov_pavel
    Linux admin
    Virtualbox не предлагает ничего ставить, он предлагает сделать конфиг виртаулки, оптимальный по его мнению для этой системы. Уже неактуальная возможность, на "Linux 2.6 \ 3.х \ 4.х" встанет любой современный дистрибутив.

    На поиграться - лучше ту ОС, у которой самое развитое сообщество. Сейчас это Ubuntu.

    Минимальная загрузка на систему - можно выбрать Desktop Environment полегче, это Xubuntu - ubuntu + XFCE.

    А можно вообще не ставить графику, любая нормальная IDE умеет подключаться к хосту по ssh и там работать. Будете кодить под Linux, не выходя из любимой винды/макоси.
    Ответ написан
    1 комментарий
  • Зачем нужна нормализация БД MySQL?

    ruFelix
    @ruFelix
    Предсказание будущего по руке, таро, кофе.
    Нормализация нужна для борьбы с избыточностью. т.е. данные не дублируются и связаны только внешними ключами.
    Видимо это было очень важно когда размер HDD был 10 мегабайт. Текущая практика показывает, что полностью нормализованная база работает очень медленно, т.к. обледенения данных это дорогая операция. Так же вы верно подметили относительно роста сложности запросов.
    Однако в нормализации обновляемых данных есть и жирный плюс, вам не надо обновлять/удалять и вставлять, одни и те же данные в куче таблиц. Ведь это тоже сложно, держать в голове всё, что нужно обновить, что приводит к ошибкам. Также решает вопросы сложности разгуливания операций изменения данных когда операция прошла не полностью.

    Поэтому оптимальность где то посередине.

    Так же не забываете, что нормализованные таблицы гораздо проще проецировать на модели в языках программирования.
    Ответ написан
    Комментировать
  • Есть задачка по выгрузке данных. Какие есть идеи?

    @igaraev
    У вас в задании противоречие
    "Объединить эти два запроса нельзя, они по отдельности очень долго выгружаются"

    Если по отдельности долго то вместе должно быть быстро.
    Попробуйте хинт /*+ materialize */
    Ответ написан
    Комментировать
  • Как посмотреть результат запроса?

    MaxDukov
    @MaxDukov
    впишусь в проект как SRE/DevOps.
    select *  
        from students
        where id = 1000;
    
     select department, course
        from classes
        where room_id = 99997;
    Ответ написан
    Комментировать
  • Почему некорректно работает raise_application_error?

    onehell
    @onehell
    Кофемашина
    Ошибка - в постановке вопроса. Сам по себе raise_application_error не умеет разрывать соединения, это делается на стороне клиента. Т.е. нужно при получении sqlerror -20500 выполнить Connection::close() или что-то вроде этого, зависит от.
    Ответ написан
    Комментировать
  • Как индексировать таблицу в Oracle?

    @eugenik
    Хм-м... Как х..шо сформулирован вопрос!
    Тут уже предлагали проиндексировать индексы?
    А если процедура не selectы делает, а updatы? И на каждый апдэйт в таблице по 3 триггера срабатывает. А дополнительные индексы только усугубят ситуацию.
    Кто ж знает, что эта "процедура" внутри делает -- выводы можно делать только на основании заголовка вопроса, т.к. штатный телепат в отпуске...
    Ответ написан
    Комментировать
  • Как индексировать таблицу в Oracle?

    @Geny
    нужно в настройках init.ora прописать fast = true и все ...)))
    Ответ написан
    Комментировать
  • Как индексировать таблицу в Oracle?

    Я вас удивлю, но в Oracle нет кнопки "Сделать Хорошо". Тут трассировать надо. И смотреть почему оптимизатор использует план который так долго работает.
    Скорее всего вам понадобится:
    Create Index,Dbms_stats.
    Ответ написан
    Комментировать
  • Как сделать статичный IP адрес, если провайдер не предоставляет такой возможности?

    Melkij
    @Melkij
    PostgreSQL DBA
    Взять VPS, настроить VPN..
    Ответ написан
    Комментировать
  • Копирование большого объёма данных из одной таблицы в другую

    KEKSOV
    @KEKSOV
    На офсайте есть много полезного на эту тему. И Google по запросу mysql speedup insert select может помочь

    Если будете использовать InnoDB, то добавьте в заголовок еще SET autocommit=0; а после инсерта добавьте COMMIT;
    Ответ написан
    Комментировать
  • Казалось бы простой select, но Oracle задумался

    @ivs13
    Убедитесь, что виноват именно запрос. Выполните его в sqlplus'е. Если отработает — виноват не оракл, а ваш пхп. Если не отработает, то нужно разбираться с запросом. Для начала упростите запрос, оставив простую выборку из одной таблицы без вызова хранимых процедур. Потом пошагово добавляйте в запрос связки с другими таблицами, вызовы хранимых процедур. На каком-то шаге зависнет — будете хоть знаять, в какую сторону копать дальше.
    Ответ написан
    Комментировать