Ответы пользователя по тегу MySQL
  • На каких объемах данных реляционные БД перестают работать?

    Zorkus
    @Zorkus
    Вообще я бы сказал, если не говорить о ценах, а просто об объемах данных, вы еще далеко от того предела, когда реляционные базы не будут выдерживать вашей нагрузке, если конечно ваша модель данных именно реляционая. В полной стойке Exadata V2-8, например, почти 5 терабайт только Flash Cache Memory (и 100/330 теребайт основного хранилища, смотря по тому, поставите вы SCSI или SATA для него.)
    Ответ написан
    Комментировать
  • На каких объемах данных реляционные БД перестают работать?

    Zorkus
    @Zorkus
    Ну вообще говоря, 2.7 Тб само по себе не так много (телекомы используют гораздо большего объема базы). Мы использовали базы около 3 терабайт на оракле, сначала два обычных среднего уровня сервера в RAC, потом пробовали Exadata DB Machine Quarter Rack (http://www.oracle.com/us/products/database/exadata-database-machine/overview/index.html — прочитайте, зверь-машина), все нормально работала.

    Ключевые проблемы:

    — partitioning и разделение это таблицы на отдельные секции, которые лежат на разных жестких дисках в рейде (критичные партиции, где лежат наиоболее горячие данные, можно положить на SSD)
    — будет ли идти большое количество «живых» запросов агрегирующих данных на высоком уровне? Запросы к таблице в несколько миллиардов записей выполняются вполне быстро, если они строго идут по partition keys, если таблица грамотно разбита на партиции, и если они лежат на разных дисках. Запросы типа — посчитать мне среднюю цену по 5 миллиардам заказов, конечно, вас быстро положат на лопатки, просто из-за сумасшедшего IO.
    — Диски. Оцените стоимость нормального SAN, посмотрите какие в MS SQL есть средства типа оракловского ASM (automatic storage manager).
    Ответ написан
    Комментировать
  • Как защитить БД с критичными данными от произвола медленных запросов?

    Zorkus
    @Zorkus
    Мне, как Ынтерпрайзнику, вообще кажется чем-то диким давать юзерам, которые не является девелоперами / support инженерами, и не знают хорошо SQL и базы данных «вообще» прямой SQL-level доступ к большой нагруженной БД с критичными данными (кстати, что значит доступ по TCP? Вы имели в виду — возможность запускать вручную запросы из mysql клиентов, типа SQLYog?)

    Вам так необходимо, чтобы Ваши юзеры могли запускать собственноручно криво написанные запросы? Они не могут обходиться набором заголовленных репорт-запросов, или чем-то таким? Они не могут посылать запросы, которые хотят исполнить, специальному грамотному чуваку, который будет их ревьювить и запускать? А как вы предотвращаете нечаянные удаления данных и прочее? Юзеры имеют read-only привилегии на все объекты БД?

    Если же Вам прямо так критично давать юзерам такой доступ… Тогда, как тут сказали тут, делать slave-сервер с репликацией, либо настраивать user resource quotas по поводу использования CPU, IO-bandwidth, памяти каждым пользователем (под которыми ваши юзеры коннектятся у БД). Сам в mysql не силен, потому не знаю, как у него с квотами ресурсов.
    Ответ написан
    Комментировать
  • Проблемы с MySQL MyISAM - дублирование записей и крэш больших таблиц

    Zorkus
    @Zorkus
    Замечу для тех, кто люто срет кирпичами выше — 70 миллионов записей в самой большой таблице — это не так уж много. Совсем не много, чтобы заявлять — «Например, если в одной таблице очень много записей (70 млн.), то можно использовать партиции».

    7 миллиардов — и десятки терабайт общего размера базы — вот это очень много.
    Ответ написан
    Комментировать
  • Поменять местами 2 строки в таблице mysql

    Zorkus
    @Zorkus
    Хм. Т.е. вы хотите по сути хранить код в БД? строка кода = строка в таблице в базе? И приоритетты вам нужны, чтобы потом запросом выбирать эти строки так, чтобы они образовывали правильный кусок кода?
    Ответ написан
  • Поменять местами 2 строки в таблице mysql

    Zorkus
    @Zorkus
    Ок, с этим разобрались, теперь по другому спрошу.

    Есть таблица, поле приоритета вынесено в отдельную колонку. Вы хотите поменять приоритет у записей А и Б. Именно поменять местами, засвопить. Вопрос — зачем? Какой бизнес-смысл в такой смене приоритета?
    Ответ написан
  • Поменять местами 2 строки в таблице mysql

    Zorkus
    @Zorkus
    И никто не спросил — а ЗАЧЕМ это нужно? sys-id на то и auto-increment, что выдается sequence-генератором раз и навсегда. Зачем вы хотите это сделать?
    Ответ написан
    3 комментария