Комментарии 19
И начните зависеть от Microsoft.
Сколько будет стоить этот сервер? Или Microsoft позволит его устанавливать бесплатно?
Вроде стоить это все будет 1/12 от стоимости оракла, а сколько стоит последний черт его знает.
Гляжу вот на слайды и вижу, что даже R умудрились поделить — нормальное распараллеливание только в Enterprise.
Самое вкусное для боевых систем в Enterprise c SA — Failover (один бесплатный Standby сервер) и License Mobility. Годовая подписка на SA — половина стоимости лицензии. Закончилась подписка — закончились права на дополнительные плюшки. Мило, не находите?
Microsoft предлагает также кросс-платформенные инструменты для SQL Server в Linux или Windows, такие как SQL Server Management Studio (SSMS), SQL Server Data Tools (SSDT), PowerShell (sqlps) и недавно анонсированное Visual Studio Code Extension для SQL Server.
Версий SSMS и SSDT под Linux нет, как может показаться из текста, только утилиты sqlcmd и bcp.
И какая из них обладает настолько хорошим оптимизатором запросов?
Для сравнения. Простой запрос:
delete from change_log where id in (select id from change_log limit 100)
Тут id — первичный ключ, то есть гарантированно уникальный атрибут. PostgreSQL (лучшая из известных мне открытых СУБД) предлагает делать Hash Simi Join таблицы с ней же!
Если последовать совету из инета и использовать ctid
, якобы наиболее быстрый способ — PostgreSQL предлагает делать Merge Semi Join, предварительно сделав Sort для каждого входа… Блин, но ведь ctid
— это физический адрес элемента! Достаточно читать записи таблицы подряд — и они окажутся уже отсортированы по ctid
!
Для сравнения, SQL Server в аналогичном запросе видит, что предполагаемое число строк после соединения — 1, и выбирает Nested Loops Join. Тоже не самый лучший вариант (в идеале, надо было вовсе выкинуть соединение) — но тут хотя бы не понадобится полный обход таблицы для удаления какой-то сотни строк!
Не говоря уже о том, что сам запрос на T-SQL пишется куда проще:
delete top (100) from change_log
Ведь в том случае когда он реализован — он удалит первые несколько строк — неважно в какой последовательности (как думаю, по порядку чтения страниц с диска). Если принять это, то и реализацию внутри можно сделать довольно просто и не особо оптимизируя. Почему не реализовано в Postgres? Может как раз из-за непредсказуемости чтения. Ведь по уму тогда надо и ORDER BY сюда притягивать.
Microsoft SQL Server для Linux: мост между мирами Linux и Windows