там нет получения объекат БД — это просто открытие файла партиции…
на второй вопрос у меня даже слов нет чтоб возразить… это такой тонкий троллинг или вы реально не понимаете смысла написанного?
Я не ради холиваров написал ответ, а просто пояснил свою позицию относительно Windows ОС.
Я считаю Oracle и MS SQL лидерами рынка и думаю сейчас они примерно сравнялись по функциональности и надежности, но вот к примеру в бесплатной версии Oracle нету того самого партиционирования :) не знаю чего там нет в бесплатной версии MS SQL но что-то мне подсказывает ряд ключевой функциональности там тоже отсутствует, а платить десятки тысяч долларов за лицензии — дорогова-то.
Однако… Как вы видете переход проекта, работа над которым ведется ни один год, на другой сервер СУБД, в котором возможно есть такие же проблемы? Переход должен быть обоснованным, надо провести исследования, научиться эффективно писать код под выбранную платформу, выяснить её плюсы и минусы, переписать мегабайты кода с одного диалекта на другой (я уж молчу об изменении архитектуры)
Пока жрем кактус — ищем workaround'ы и продолжаем работать с тем что есть, изучая в фоне то, что предлагают другие разработчики СУБД.
PostgresQL пока единственно возможная альтернатива, пока переписали Java драйвера для работы с процедурами и переводим в тестах одну подсистему, в которой не очень много SQL кода, что выйдет — посмотрим.
Думаю главный недостаток MS SQL это та операционная система, с которой работает данная СУБД. Остальные её достоинства, какие бы они не были затмеваются этим недостатком. Я привык, что сервера работают по несколько лет без единой перезагрузки, боюсь для Windows Server это скорее исключение из правил, хотя я более чем уверен что в такой серьезной СУБД данный алгоритм реализован более оптимально.
Работая с любой БД на серьезных объемах — сталкиваешься с проблемами. Oracle постоянно валит ORA-600 как только начинаешь использовать его новые фичи под большими нагрузками. MySQL серьезная СУБД — единственно что меня возмущает — это то, что об этих явных недостатках нигде нету ни слова. Весь модуль партиций должен идти с индексом beta и описанием тех проблем, которые я осветил в этой статье.
Сам по себе механизм партиций появился не так уж давно, ему еще нужна обкатка. Кроме того, вы ведь пользовались Community редакцией, верно? Возможно в коммерческой дела обстоят лучше?
угу года 2-3 как уже есть.
уверен на 100% что commercial версия ничем от community в данном вопросе не отличается.
— меня взволновало то, что вместо решения проблемы мы просто пытаемся сделать это 10 раз, вопрос конечно спорный — но я не сторонник таких решений
— запрос по словарям данных должен выполняться мгновенно.
Не важно что именно вы напишете в запросе, сервер СУБД все равно перечитает все партиции всех таблиц и пересоберет по нима статистику. Прочитайте тему внимательнее пожалуйста, там детально объясняется почему ваше предположение не работает. Проверка наличия партиции по словарям поднимает с диска все партиции и производит по ним динамический сэмплинг для индексов.
Я склонен объяснять быстрое выполнениа запроса — тем, что табличный кэш содержал все что надо, лучше для таких экспериментов — перезапускать СУБД.
Холодная база понятие относительное — в первую очередь потому, что на её разогрев может не хватить ресурсов или ряд параметров выставлен не верно, и какой нибудь кэш все таки вымывается.
По идее все таблицы из INFORMATION_SCHEMA формируются на лету по этому нет смысла их индексировать, но что именно там происходит в конкретном случае — сказать сложно — посмотрите что там в performance_schema
show processlist; -- смотрим идентификатор нужного нам процесса
select *
from performance_schema.threads t
where t.processlist_id = 1; -- получаем идентификатор треда для трейсов
select 'current' type,
event_name,
source,
sum(timer_wait) timer_wait,
count(1)
from performance_schema.events_waits_current
where thread_id = 25
group by event_name, source
union all
select 'history' type,
event_name,
source,
sum(timer_wait) timer_wait,
count(1)
from performance_schema.events_waits_history
where thread_id = 25
group by event_name, source
union all
select 'long' type,
event_name,
source,
sum(timer_wait) timer_wait,
count(1)
from performance_schema.events_waits_history_long
where thread_id = 25
group by event_name, source
order by timer_wait desc;
-- limit 10;
Мне доводилось видеть пару полезных фиксов (не по этой теме) от гугла, может они что полезного пишут. Я сейчас делаю ставки на Oracle судя по тому что сделали в 5.6 это прорыв, там куча полезных фич, которые ждут многие. Есть мнение, что они доведут это БД до ума, хотя тут есть подвох, они могут сделать все это платным, прецеденты уже появились commercial distributions of MySQL include a PAM authentication plugin that enables MySQL Server to use PAM to authenticate MySQL users
Только после выхода 5.5.16 я понял почему по этой теме были такие хреновые доки, не дай бог сами пользователи напишут плагин, который мы выпускаем в следующем релизе за деньги.
Вообще стараюсь не критиковать чужой код, так как прекрасно знаю как тяжело писать что-либо в большом проекте, сам не без греха, глядя на свои код годовалой давности часто в душе возмущаюсь какой придурок это написал :) но ошибки реализации описаные в статье просто заставляют волосы на моей голове встовать дыбом! Почему этого нет в документации? Ну написали, молодцы, а почему никто не знает что это работает НАСТОЛЬКО криво…
После конференции я могу уверенно сказать, что вся перкона — это просто саппорт тима для MySQL. И все его сотрудники делают деньги на том, что продукт сей несколько кривоват.
На вопрос: почему вы не включили полезную фичу, которую вы написали по репликации в перкону, Петр ответил — так нам за это никто не заплатил, а времени и так в обрез. Вот найдется заказчик которому это надо — включим, а так пусть на полке пылится. Это не есть плохо, но просто показывает для чего создана компания.
Конкретно по этому вопросу не смотрел, однако ранее при возникновении критических ошибок подобного рода смотрел исходники Percona Server. Сложилось ощущение, что перкона это просто оболочка, которая никаких серьезных изменений в MySQL не привносит. Партиционирование имеет довольно размазанную по коду ошибку — не думаю что перконовцы её пофиксили.
Петр высококлассный специалист, его статьи в Performance Blog просто отличные, камень не в его огород а в огород организаторов конференции, которые нагло наврали про её содержание. После того как я вышел из Инфопространства — сложилось мнение что меня поимели за мои же 300$
Сатрый друг луче новых двух. Честно говоря — страшно, так как в постгресе однозначно будут свои грабли. Есть мнение что не факт, что их будет меньше, но параллельно мы ведем вялотекущий проект по переходу на постгрес.
Метод был хорош — но уже морально устарел (для иннодб таблиц удобнее смотреть значение innodb переменных). Если граммотно настроить performance_schema то можно снимать статистику по запросу в режиме рельного времени и, если понимать какие строчки кода что обозначают, можно докапаться не только до истины, что у вас слишком активно читается табличка 1...0 раз, но и понять почему её нет предположим в кэше, а так же что более важно обнаружить другие более узкие места, которые не показываются в сессионных переменных.
А я помню какому-то чуваку проставлял три пива — для того чтобы он мне показал что такое интернет. Сидел ночью в нетскейпе без картинок и ваще не понимал как тут сайты какие открыть… Страшные были времена…
Визуальными конструкторами никогда не пользовался, пишу исключительно на SQL, думаю как и любой другой разработчик, который занимается только СУБД. Для себя испробывал все инструменты. Для Linux платформ лучше белки нету. Для винды: dbForge Studio for MySQL от DevArt — имел реальный проблемы с форматированием кодов процедур и запросов, с год назад был жутко багнутый. Отладка процедур в MySQL ваще песня — поржал. По мимо этого, тоже ввиду багов, так и не смог нормально настроить клиента на возвращение резалтсета в том же окне без фетчинга всех данных запроса. жаба которую я клинически неперевариваю, так как раньше работал с PL/SQL Developer, но достойной замены её пока нет. Там нормальный форматтер и удобные макросы. Есть конечно глюки с прерыванием запросов, но это меньшее из зол. В итоге юзаю её сейчас.
на второй вопрос у меня даже слов нет чтоб возразить… это такой тонкий троллинг или вы реально не понимаете смысла написанного?
Я считаю Oracle и MS SQL лидерами рынка и думаю сейчас они примерно сравнялись по функциональности и надежности, но вот к примеру в бесплатной версии Oracle нету того самого партиционирования :) не знаю чего там нет в бесплатной версии MS SQL но что-то мне подсказывает ряд ключевой функциональности там тоже отсутствует, а платить десятки тысяч долларов за лицензии — дорогова-то.
Пока жрем кактус — ищем workaround'ы и продолжаем работать с тем что есть, изучая в фоне то, что предлагают другие разработчики СУБД.
PostgresQL пока единственно возможная альтернатива, пока переписали Java драйвера для работы с процедурами и переводим в тестах одну подсистему, в которой не очень много SQL кода, что выйдет — посмотрим.
угу года 2-3 как уже есть.
уверен на 100% что commercial версия ничем от community в данном вопросе не отличается.
— запрос по словарям данных должен выполняться мгновенно.
Не важно что именно вы напишете в запросе, сервер СУБД все равно перечитает все партиции всех таблиц и пересоберет по нима статистику. Прочитайте тему внимательнее пожалуйста, там детально объясняется почему ваше предположение не работает. Проверка наличия партиции по словарям поднимает с диска все партиции и производит по ним динамический сэмплинг для индексов.
сыровата конечно пока — но в решении спорных вопросов — очень даже помогает.
Холодная база понятие относительное — в первую очередь потому, что на её разогрев может не хватить ресурсов или ряд параметров выставлен не верно, и какой нибудь кэш все таки вымывается.
Рискну предположить, что причина аналогична.
commercial distributions of MySQL include a PAM authentication plugin that enables MySQL Server to use PAM to authenticate MySQL users
Только после выхода 5.5.16 я понял почему по этой теме были такие хреновые доки, не дай бог сами пользователи напишут плагин, который мы выпускаем в следующем релизе за деньги.
На вопрос: почему вы не включили полезную фичу, которую вы написали по репликации в перкону, Петр ответил — так нам за это никто не заплатил, а времени и так в обрез. Вот найдется заказчик которому это надо — включим, а так пусть на полке пылится. Это не есть плохо, но просто показывает для чего создана компания.
Петр высококлассный специалист, его статьи в Performance Blog просто отличные, камень не в его огород а в огород организаторов конференции, которые нагло наврали про её содержание. После того как я вышел из Инфопространства — сложилось мнение что меня поимели за мои же 300$
dbForge Studio for MySQL от DevArt — имел реальный проблемы с форматированием кодов процедур и запросов, с год назад был жутко багнутый. Отладка процедур в MySQL ваще песня — поржал. По мимо этого, тоже ввиду багов, так и не смог нормально настроить клиента на возвращение резалтсета в том же окне без фетчинга всех данных запроса.
жаба которую я клинически неперевариваю, так как раньше работал с PL/SQL Developer, но достойной замены её пока нет. Там нормальный форматтер и удобные макросы. Есть конечно глюки с прерыванием запросов, но это меньшее из зол. В итоге юзаю её сейчас.