Задать вопрос
  • Что такое кластерный индекс в mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Кластерный индекс... это на самом деле понятие крайне виртуальное.

    Что такое обычный некластерный индекс? берём выражение индекса, считаем его значение для каждой записи, сортируем и пишем на диск. Получаем отдельную структуру, в которой выражение индекса сортировано. Когда потребуется искать заданное значение этого выражения, мы вместо просмотра от записи к записи сразу половинным делением быстренько найдём нужное значение, возьмём из него уникальный идентификатор записи, и обратимся за записью. Если в таблице 1000 записей, то для поиска заданного значения без индекса нам в среднем пришлось бы просмотреть 500 записей, а с индексом - всего 10.

    Теперь что такое кластерный индекс... сначала почти то же. Берём выражение индекса, считаем его значение для каждой записи, сортируем и... а вот теперь не записываем по порядку эти значения с номерами соответствующих записей в отдельную структуру, а сами записи располагаем в этом порядке. Теперь, когда потребуется искать заданное значение этого выражения, мы вместо просмотра от записи к записи, как это было, когда записи не сортированы, сразу половинным делением быстренько найдём нужное значение. Но нам уже не надо получать номер записи и обращаться за ней - мы нашли саму нужную запись.

    В MySQL (точнее, в используемом по умолчанию движке InnoDB) первичный индекс, во-первых, существует ВСЕГДА, во-вторых, определяется так (в статье, на которую дали ссылку, имеются неточности в пункте 2):
    1. Если первичный ключ задан явно, то его выражение является также и выражением кластерного индекса. Или иначе - первичный ключ и есть кластерный индекс.
    2. Если первичный ключ явно не задан, но в таблице имеется индекс, отвечающий всем следующим требованиям:
      • является уникальным
      • не является функциональным, в т.ч. не использует в выражении вычисляемые поля
      • не использует в выражении поля, которые определены как допускающие значение NULL

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


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

    Фактически - именно так.

    Создаётся ли отдельная таблица или просто упорядочивается хранение существующих данных?

    Не создаётся. Но при изменении первичного индекса таблица полностью пересоздаётся с новым физическим порядком записей.

    Если данные упорядочиваются этим индексом, допустим по ID, то почему при select без сортировки данные могут возвращаться в произвольном порядке, а не отсортированные по ID по-умолчанию?

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

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

    ===

    PS. Кстати, правило выбора индекса, который будет использоваться в качестве кластерного, имеет неприятный побочный эффект. Если у некоторых полей, входящих в какие-то индексы, изменяется свойство NULLability, то это может привести к изменению того, какой из имеющихся индексов станет использоваться в качестве первичного по пункту 2. В результате мы получим невозможность использования INSTANT / INPLACE методов, и будет использован длинный COPY. Впрочем, ситуация такая крайне редка.
    Ответ написан
    2 комментария
  • Как настроить ssh для возможности контроля действий?

    Alex_Geer
    @Alex_Geer
    System Engineer
    Инструменты платные потому что имеют что то уникальное: набор функционала или удобство в использование.
    Все ваши хотелки можно реализовать при помощи разных инструментов, требуется просто поэкспериментировать и много времени провести в гугле.

    1. Возможно в этих статьях найдешь ответ 1 статья и 2 статья
    2. Ни как.
    3. Ссылка
    4. Можно использовать Tmate

    P.S Если вы предоставляете данные разным людям, то для безопасности я бы все же потратился на покупку удобного ПО для контроля их действий.
    Ответ написан
    1 комментарий
  • Запуск компьютера с удаленным доступом и некоторыми службами. Как это провернуть максимально правильно?

    @pfg21
    ex-турист
    ага, для автозапуска необходим вход пользователя.
    используй вместо автозапуска службы виндоус, они конечно кривоваты для использования, но зато запускаются вне зависимости от пользователя.
    крививоватость использования исправляю через Non-Sucking Service Manager есть еще какието поделки.
    очередность можно сделать через зависимости, но виндовые зависмости сервисов не ковырял.

    обязательно изучай линукс. в серверных делах без него никак.
    со смартфона можно подключаться через кучу полноценных ssh-клиентов.
    минус - смартфон не очень удобен для commad line. блютус клавиатура или планшет уже проще.
    еще есть вариант прикрутить веб-интерфейсы, но тут готовых заготовок нет.
    Ответ написан
    2 комментария
  • Есть ли сервис, который составит план разработки сайта со всеми нюансами?

    @Drno
    Любой сайт фриланса. Там за денюшку Вам составят подробный план и проект)
    Насчет технических моментов - это не Ваша проблема, а реализатора
    Ответ написан
    Комментировать
  • Python в запущенный в контейнере работает медленнее натива?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Разница в бинарях - Python на хостовой машине собран без отладочной информации, а тот, который в образе python:3.10.4 собран с нею.

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

    Можно пойти дальше и собрать Python из исходников самому, но самостоятельная сборка это такое себе развлечение (хотя с помощью pyenv делать это довольно просто), а выигрыш не такой уж и значительный - устанавливать бинарные пакеты сильно проще.

    PS
    Никогда не используй образы Alpine - там вместо glibc суррогат под названием musl. В прочем для статически слинкованных бинарей на Go использовать можно, но тогда уж выгоднее использовать scratch
    Ответ написан
    5 комментариев
  • Какой самый выгодный способ получения удаленного Kubernetes кластера?

    Griboks
    @Griboks
    Устроиться на работу программистом и как бы ненавязчиво продвигать CI/CD.
    Ответ написан
    7 комментариев
  • Что это такое и как защититься?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По двору прошелся жулик и попытался хакнуть эксплойтом для "майбаха" (условно) все тачки в вашем дворе. Майбахов не нашлось, этот жулик пошел дальше и забыл уже про ваш дворик.

    Надо ли защищаться от атаки, не релевантной вашему сетапу? Не надо.
    Надо ли делать выводы об уязвимости того или иного оборудования? Надо.
    Надо ли проверять свои конфигурации на эксплойты? Надо.
    Надо ли реагировать на всякую нерелевантную хрень в логах с ошибками порядка 400? Не надо.
    Надо ли позаботиться об оркестрации быстрого развёртывания ваших серверов на случай взломов или проблем с железом? Конечно надо!

    Вообще, если ваш сетап на виртуальных машинах в повторяемой среде и с декларативной конфигурацией вроде кубера или докера, то вы легче сможете пережить всякие такие факапы.
    Схема такая.
    Есть признаки взлома - бэкап логов, снапшот базы, бэкап стораджа, остановка сервисов (если позволяет продакшн), анализ атаки и последствий. Устраняем уязвимость по вектору атаки (гугление по логам и курение тредов), правим конфиги развёртывания и запускаем прод. Потом долго и тщательно разбираемся по логам, снапшотам и бэкапам что затронуто. Делаем тестовый чистый сетап по старой конфигурации и сравниваем пофайлово с атакованной системой, выясняем в какие места вмешались злодеи. Дифаем базу и смотрим на подозрительные различия. Делаем выводы, объявляем об утекших данных, если есть такие признаки (чтобы не подставлять пользователей), принимаем превентивные меры против похожих векторов атак.

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

    Это взгляд дилетанта по безопасности, если чего пропустил -- поправьте. Если где не прав -- расскажите.
    Ответ написан
    3 комментария
  • Как проверить нагрузку индексов на сайт?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Первое что нужно сделать - смотреть слоулог, или хотя бы завести его, если еще нету. Можно поставить мониторинг и анализ запросов в какой-нибудь Percona или что-то типа, посмотреть что вообще происходит. Потом уже можно говорить что что-то лишнее или не хватает.
    Ответ написан
    2 комментария
  • Как намекнуть начальству, что agile не избавляет от тз?

    1. Agile - это про то что люди должны договариваться. По тому надо не намёки делать, а говорить прямо и предметно.

    2. Вот вы говорите, что вам нужно ТЗ. А зачем вам оно нужно?
    Вам не понятна та постановка, которая описывается в карточках?
    Есть неоднозначность?
    Уже есть примеры, когда от этой неоднозначности пострадал продукт (например из-за необходимости переделывать)?

    Или вам нужно не ТЗ, а виденье того, чем в итоге должен стать продукт?
    Не понятно, для чего вообще все эти карточки перекладываются?
    Если так, то, вероятно, вам нужно не ТЗ, а какие-то OKR-ы, чтобы можно было от них отталкиваться при составлении задач.

    Возможно, произошла мискоммуникация между вами и заказчиком. Возможно, заказчик действительно ожидает от вас (команды) самостоятельности при составлении задач - по сути сочетание в себе и менеджера и аналитика.
    Это нормально, но нужно этот момент тоже прояснить.
    Ответ написан
    6 комментариев
  • Как залить на сервер сайт с бекендом, который написан на php?

    @AndryG
    Я за семь минут сформулировал три разных ответа. Это ж надо так умудриться задать вопрос, что хрен поможешь.

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

    когда подключается PHP код выходит ошибка (не находит страницу)

    Ошибки - это нормально! Нужно найти причину и устранить ее.

    Правильно заданый вопрос - 50% ответа. Тренируйтесь излагать мысли - полезно для кодинга
    Ответ написан
    Комментировать
  • Как правильно делать коммит в монорепе?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Можно указывать в названии PR:
    feature/front/books-added-author-field
    feature/back/books-added-author-field

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Для начала, следует научиться запускать бота где-то на сервере руками.
    Потом описать инструкцию что для этого делается (новая папка, редактирование конфига, запуск бота).
    Затем реализовать эти команды в скрипте, который вызывается нажатой в веб-интерфейсе кнопкой.

    Вообще вопрос немного неясен. Ответ как бы элементарный - установка и настройка бота.
    Детальный ответ тут больше будет как выполненная за вас работа, а в этом случае вам на фриланс
    Ответ написан
    3 комментария
  • Как найти и настроить права bash?

    paran0id
    @paran0id Куратор тега Linux
    Умный, но ленивый
    На исполняемый файл будет указывать симлинк /proc/<pid>/exe
    Все открытые процессом в данный момент файлы можно получить командой lsof -p <pid> /
    Еще можно посмотреть слинкованные библиотеки командой ldd /путь/к/исполняемому/файлу, но это далеко не всегда вам поможет.

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

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    То, что вы описали, называется kiosk mode и в Windows 10+ он есть
    Ответ написан
    Комментировать
  • Как избавиться от ошибки сертификата?

    @d-stream
    Готовые решения - не подаю, но...
    В приведённом варианте openssl создаёт самоподписанный сертификат. На что и будут регулярные жалобы.
    Прямой вариант - выпустить нормальный сертификат например на letsencrypt с цепочкой удостоверяющих центров и т.п.
    Ну или как минимум имитировать подобное создав свой псевдоудостоверяющий центр:
    ca сертификат и им подписать серт для гитлаба, но тогда придётся ca прописывать всем клиентам как trusted ca
    Ответ написан
    2 комментария
  • Как настроить Nginx чтобы он DNS обращение перебрасывал на другой DNS?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    DNS тут ни при чём, nginx это веб-сервер.

    Если я правильно вас понял, вам нужно стандартное обратное проксирование сайта, описанное примерно в любой инструкции, например.
    Ответ написан
  • Почему 300 проксей проверяются так долго?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе нужно проанализировать статистику по негативным ответам проверки прокси.
    Если большая часть ответов - это socket timeout - то сделай таймаут не 5 секунд а 0.5 секунды.
    Ответ написан
    Комментировать
  • Как подключить автодополнение в командах в bash?

    @Komandir_Bublik
    Посмотри установлен ли bash completion?

    bashrc

    # enable programmable completion features (you don't need to enable
    # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
    # sources /etc/bash.bashrc).
    if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; then
        . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
      fi
    fi
    Ответ написан
    3 комментария
  • Почему браузеры и curl дают разные результаты?

    ValdikSS
    @ValdikSS
    На сайте используется TLS Fingerprint (вероятно, JA3) как один из индикаторов сессии в системе перед веб-сервером, вероятно, это анти-DDoS.
    Так как браузер и curl используют разные SSL-библиотеки и передают разные наборы шифров, сервер предлагает вам пройти challenge.
    Ответ написан
    5 комментариев
  • Как узнать, что веб-адрес официальный?

    Adamos
    @Adamos
    "Какой-то сертификат" и у фишингового сайта будет.
    Если начать копать, внезапно окажется, что сам термин "официальный сайт" довольно размыт. У крупных IT-корпораций, например, число совершенно официальных сайтов может исчисляться десятками. А локальная мелочь может иметь только страничку во ВКонтакте...

    Задачу проще решать от противного - выделять не официальные сайты, а фишинговые.
    Собственно, Гугль это давно делает и предлагает список таковых в своем API.
    Ответ написан
    Комментировать