Как стать автором
Обновить

Комментарии 19

Сколько будет стоить этот сервер? Или Microsoft позволит его устанавливать бесплатно?

Вроде стоить это все будет 1/12 от стоимости оракла, а сколько стоит последний черт его знает.

Получается экономия только на лицензировании Windows. Хотя если это будет гораздо дешевле под Linux чем запустить под Windows, то может и будет пользоваться успехом.

Как обычно: Express -бесплатно, Standard — за деньги, Entrerprise — за большие деньги… Самое вкусное — только в Enterprise.
Гляжу вот на слайды и вижу, что даже R умудрились поделить — нормальное распараллеливание только в Enterprise.
Они отдельно выделили момент, многие возможности, ранее доступные только в Enterprise версии, теперь доступны в стандарте.
Простите, поправлю Вас.
Самое вкусное для боевых систем в Enterprise c SA — Failover (один бесплатный Standby сервер) и License Mobility. Годовая подписка на SA — половина стоимости лицензии. Закончилась подписка — закончились права на дополнительные плюшки. Мило, не находите?

[offtopic]C каких это пор Microsoft работает на ноутбуке Apple, как на картинке?[/offtopic]
Года эдак с 2006? Точно уже не помню. Ищите Bootcamp.
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.
Имхо, ставить пропиетарную софтину на опенсорнсную ОС не самое лучшее решение. Есть множество СУБД подходящих для Linux по идеологии.

И какая из них обладает настолько хорошим оптимизатором запросов?

Это вы про Oracle?

Для сравнения. Простой запрос:


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
Нда… Но, может, быть тут дело в том, что для SQL Server DELETE поодерживат TOP, для Postgres LIMIT в DELETE не реализован?
Ведь в том случае когда он реализован — он удалит первые несколько строк — неважно в какой последовательности (как думаю, по порядку чтения страниц с диска). Если принять это, то и реализацию внутри можно сделать довольно просто и не особо оптимизируя. Почему не реализовано в Postgres? Может как раз из-за непредсказуемости чтения. Ведь по уму тогда надо и ORDER BY сюда притягивать.

Разумеется, если бы был limit в delete — он бы работал как надо. Но даже если не использовать в MS SQL Server эту фичу и написать тот же самый запрос что и в Postgres — его план выполнения окажется оптимальнее.


А непредсказуемость чтения не всегда является недостатком.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий