Всем привет. Созрел насущный вопрос, нуждаюсь в помощи. Имеется довольно большой и серьезный проект, написанный на php+mysql. В настоящее время нареканий на производительность нет, поэтому полторы-две с половиной тысячи запросов в секунду (из которых примерно 90% DML) с почти десятка серверов плюс непосредственно веб проблем не создают (InnoDB). Однако есть проблема с самим MySQL ;-) Его возможностей уже не хватает. В частности, нет нормальной процедурной части, нет иерархических запросов, есть ряд ограничений (речь ТОЛЬКО про STABLE версии). Поэтому было принято волевое решение переходить на что-то более серьезное. Пока выбор идет между Oracle и MSSQL (потому что на каждом по 2-3 года опыт работы). Первый, конечно, предпочтительнее, однако второй дешевле как по серверным лицензиям ($400-500 за базу плюс $300 за сервер против более $6000 за оракл под линукс), так и по железу: многопроцессорный амд с 8-16 гб оперативы и win2003 стоит сравнительно мелочь, а хватит его с головой и выше на года', в то время как оракл ставить на линукс не хочется, а для винды конфигурацию надо посерьезнее (т.к. лицензирование по кол-ву используемых процессоров). В общем основной фактор в выборе цена, поэтому mssql. Собственно, сам вопрос: имел ли кто-то опыт работы с использованием mssql в качестве БД для сайта на php c таким количеством запросов (не менее полутора и до трёх тысяч в секунду с перспективой 5-6-7)? Высока ли производительность и устойчивость пула (навскидку основной проблемой может быть только время соединения)? Напомню, система распределенная... Веб на одном сервере и еще несколько (уже десяток вот-вот перешагнем) машин в разных датацентрах. P.S. Можно в личку или по icq...
Я же написал. Хочу, например, процедуры с возможностью передавать временные таблицы, хочу запросы иерархические, триггеры нормальные хочу, хочу индексы больше чем по 255 символов. Ну и по мелочам... Хочу чтобы delete from t where id in (select id from t join ... where ...) работало и т.д.... P.S. Действительно офф.
можно отдельную тему для холивара отделить. )) не понял. вопрос в удобстве или скорости? данный конкретный пример не критичен имхо.
1. Ну есть такие запросы... "Иерархические"... Они нужны. В мускл их нет. 2. Дело не в удобстве, а в том что такой запрос не работает в mysql. Приходится выполнять два запроса. ----------------- Критичен пример или нет - неважно, я не об этом спрашивал и спрашиваю. Главный тезис - mysql больше НЕ устраивает. Задачи усложнились, немного изменились. И поделать с этим ничего нельзя.
Sanito Если переходить, то только на Оракл - эта система, на мой взгляд, является более перспективной и стабильной. Вы только учтите одну вещь... ни один разработчик СУБД не вставляет в свою систему пустые циклы... и памяти больше, чем необходимо, не выделяет... я это к тому, что это палка о двух концах, и за все преимущества нужно платить - если вы перейдете на более "транзакционный" язык, вы обязательно потеряете в производительности на более простых, атомарных операциях - здесь у Мускула равных нет.
dark-demon Для работы с деревьями есть Nested Sets Кстати, Постгрес - это вариант. Я как-то почитал список возможностей, понравилось. Правда поставить его у себя мне так и не удалось...
Угу. Пытались поднять один проек на базе MsSql - руководствовались тоже, ценой. Полгода помучались с переодическими падениями, забоями спула, и прочими проблеми, после чего проект мигрировал на Оракл. У Ораклового сервера на данный момент аптайм 276 дней...
dark-demon про иерархические запросы понятно, но это не отменяет необходимость самому следить за глубиной рекурсии и объемом вычислений. Сделать-то можно, а вот надо ли? Стоит семь раз подумать. И я спрашивал про задачи, а не абстрактные "возможности". Про триггеры не понял совсем.
А можно подробнее насчет периодических падений, переполнения пула (действительно переполнялся?) и прочих проблем? И если можно, примерную конфигурацию железа сервера, пару слов про сам проект (без имён) и по усмотрению пару слов... Если это не конфиденциальная информация конечно же... Интересует именно насколько разношерстное всё и вообще. Потому что у меня в силу специфики freebsd разных версий и линукс. Ну и плюс, если mssql, еще и windows сервер появится. Нет, он "не нравится". Работает у знакомых на 2хОптерон с 4 Гб ram, база простая, индексы в порядке, запросы смотрели - вроде всё должно быть хорошо, а все плохо (в плане производительности). Плюс у себя ставил для локальных нужд, не внушило... Ну и явно он проигрывает в процедурных возможностях даже двухтысячному сиквелу, не говоря уже про 2005 (оракл даже не вспоминаем). Совершенно согласен (имею пару сертификатов), если бы не одно большое но. Стоит он очень много, а условно-бесплатная версия имеет ограничения... Один процессор, не более 1 Гб оперативки, не более 1 Гб база... Говорят, что в Oracle 11g Express увеличат в два раза всё, но все равно мало. Пусть у нас до 1 Гб базе еще далеко (говорим только про данные), но надо смотреть дальше, на перспективу. Плюс довольно расплывчато в описании всё насчет того, что же это за объем. Если общий всех файлов - тогда 1 Гб точно мало.
По порядку расскажу. Работаю я в национальном операторе связи - задача была такова: все существующие телекоммуникации разместить в графическом интерфейсе на спутниковых картах, с указанием спецификации, et cetera, в том числе и веб-клиентом. И чего нас потянуло на MsSQL... )) Windows 2000 Advanced Server + MsSQL 2000 sp2 на intel xeon x4 + 4 гб рамы. Первой проблемой стал регулярно забивающийся лог, отключить который было нельзя, ибо разработка, но и работать с ним было не очень удобно, ибо он один файл. Ладно, это решили автоматическими бэкапами лога с архивацией. Следующей проблемой стал падающий MSSQL AGENT - который вдруг переставал отвечать на запросы, и должен был перегружатся ручками. Делал он так раза два в неделю. Пул забивался всего два раза, правда, причем вешая всю систему напрочь. Поскольку на карте предпологались сложные отрисовки связанных деревьев, на первую отрисовку тратилось секунд 20(около 10000 обьектов со связями с друг ругом), и это при частичном внесении данных. Надоело это через полгода, все это переехало на RedHat Advanced Server 9 + Oracle 9.2, и с тех пор (два года) перегружалось два раза - когда сервер переносили в другую серверную, и когда изза проблем в сети упал Оракловский листенер. С тех пор оно все там благополучно крутится. )
Т.е. все-таки веб-клиент был как довесок, одна из возможностей, а основной упор делался на десктоп-приложение с постоянным соединением с БД? Это важно, потому что для сайта важна высокая скорость соединения, чего не скажешь о десктоп-приложении.
Нет, нам тоже была важна высокая скорость, ибо у нас по тем временам часть районов была на модемной связи с областным центром, в основном, вебклиент под них и делался. Сейчас правда, вебклиент почти не развивается, мы терминальными серверами для всех районов стали пользоватся. Но тогда он был, и был очень актуален.