Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9   вперед  Ctrl      все
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
дддддд
Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.



Уважаемый, не всегда с точки зрения эффективности все можно решить одним запросом. В частности в MS SQL довольно часто временный таблицы\табличные перменные используются, когда надо получить данные с линкованных серверов, обработать их и\или раскидать по локальным таблицам.
3 апр 09, 09:14    [7015435]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
pkarklin
дддддд
Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.



Уважаемый, не всегда с точки зрения эффективности все можно решить одним запросом. В частности в MS SQL довольно часто временный таблицы\табличные перменные используются, когда надо получить данные с линкованных серверов, обработать их и\или раскидать по локальным таблицам.


Что-то задача у Вас меняется от поста к посту.
После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту.
теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink).
Вы ж определите, какую задачу невозможно решить без использования временных таблиц?
3 апр 09, 09:24    [7015470]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
дддддд
Что-то задача у Вас меняется от поста к посту.
После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту.
теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink).
Вы ж определите, какую задачу невозможно решить без использования временных таблиц?


У меня ничего не меняется. Все перечисленные мной ранее пункты остаются в силе. Но, кмк, Вы так и не поняли этих пунктов, ибо апдейчу я не физическую таблицу бд, а временную таблицу, потом делаю с временной таблицей дополнительные DML и только потом результирующим запросом возвращаю данные клиенту или распихиваются по физически таблицам бд. Сделайте мне, пожалуйста вставку данных в три таблицы и UPDATE двух других одним запросом из одного резалтсета, например.

С линкованными запросами дело далеко не столько в синтаксисе. :) Не всегда оптимизатор может правильно определить на основании запроса, использующего и линкованного и локального сервера, какой запрос надо отправить на линкованный сервер, дабы только ту получить порцию данных, которую необходимо потом связать с данными локального сервера.
3 апр 09, 09:36    [7015509]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
pkarklin
[quot дддддд]Что-то задача у Вас меняется от поста к посту.
После того, как я написал пример, как проапдейтить таблицу, не используя временную таблицу, почему-то оказалось, что ничего редактировать не надо, а надо вернуть данные клиенту.
теперь оказывается, что надо сделать запрос с линкованных серверов (хотя в синтаксис запросов отличается только добавлением ликов после имени тиблицы типа @myLink).
Вы ж определите, какую задачу невозможно решить без использования временных таблиц?


pkarklin

У меня ничего не меняется. Все перечисленные мной ранее пункты остаются в силе. Но, кмк, Вы так и не поняли этих пунктов, ибо апдейчу я не физическую таблицу бд, а временную таблицу, потом делаю с временной таблицей дополнительные DML и только потом результирующим запросом возвращаю данные клиенту или распихиваются по физически таблицам бд. Сделайте мне, пожалуйста вставку данных в три таблицы и UPDATE двух других одним запросом из одного резалтсета, например.


Насчет временной таблицы я в курсе. Почти каждая процедура в MS SQL начинается с создания временной таблицы, редактирования в процессе работы, слива данных и удаления в конце процедуры. Такова философия MS SQL.


pkarklin

С линкованными запросами дело далеко не столько в синтаксисе. :) Не всегда оптимизатор может правильно определить на основании запроса, использующего и линкованного и локального сервера, какой запрос надо отправить на линкованный сервер, дабы только ту получить порцию данных, которую необходимо потом связать с данными локального сервера.


Вот этого я не понял. Я всегда считал, что запросы пишутся программистами.
3 апр 09, 09:52    [7015567]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
Что касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено.
Ну и чистит он их сам после завершения транзакции...
3 апр 09, 10:00    [7015616]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
дддддд
Почти каждая процедура в MS SQL начинается с создания временной таблицы, редактирования в процессе работы, слива данных и удаления в конце процедуры.


Вы утрируете, IMHO.

дддддд
Вот этого я не понял. Я всегда считал, что запросы пишутся программистами.


Что-такое распределенный запрос вызнаете, надеюсь?! В запросе вида:

SELECT
  *
FROM
  localserver.database.schema.table t1
  INNER JOIN linkedserver.database.schema.table1 t2 ON
  t1.id = t2.id
WHERE
  t2.name LIKE 'SomeString%'

оптимизатору локального сервера надо принять решение какой запрос отправить на linkedserver, дабы он там выполнился и данные от него были получены. Не всегда оптимизатор запросов на основании данные, предоставляемых провайдером от удаленного сервера может это корректно сделать и может попытаться тупо потащить все данные из t2.

В качесте решения м.б. использовано заполнение временной таблицы данными только с удаленного сервера и потом их объединение с данными локального или использование вместо времянок Pass-Through Queries, которые явно будут выполняться на линкованом сервере. Какой вариант будет выигрышнее по производительности следует определять в каждом конкретном слуае.
3 апр 09, 10:08    [7015652]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
А если указать хинты?
3 апр 09, 10:11    [7015678]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ддддд
Что касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено.
Ну и чистит он их сам после завершения транзакции...


Закат солнца вручную, очень похожий на глобальные временные таблицы в MS SQL. Одной изоляцией транзакций (которая ничуть не хуже, а даже "лучше" "прослеживается" в MS SQL) здесь не обойдешься. Расскажите, пожалуйста, как он их "чистит сам". Например, в MS SQL локальная временная таблица видна только сесии, в которой она создана и не надо никаких заморочек с транзакциями и разделением между сессиями. Более того, локальная временная таблица, созданная в хп, автоматически удаляется при выходе из хп.
3 апр 09, 10:12    [7015681]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
дддддд
А если указать хинты?


Какие?
3 апр 09, 10:12    [7015683]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
pkarklin
дддддд
А если указать хинты?


Какие?


по индексу например
3 апр 09, 10:18    [7015724]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
дддддд
Guest
pkarklin
ддддд
Что касается случаев, когда действительно нельзя обойтись без временной таблицы (в основном для хранения ID и еще нескольких служебных полей), создается ОДНА Temprorary таблица (не внутри процедуры, а как обычная таблица) и используется для хранения каких-то временных данных из разных процедур одновременно, т.к. Оракл четко прослеживает изоляцию транзакций и пересечение даннах от разных процедур исключено.
Ну и чистит он их сам после завершения транзакции...


Закат солнца вручную, очень похожий на глобальные временные таблицы в MS SQL. Одной изоляцией транзакций (которая ничуть не хуже, а даже "лучше" "прослеживается" в MS SQL) здесь не обойдешься. Расскажите, пожалуйста, как он их "чистит сам". Например, в MS SQL локальная временная таблица видна только сесии, в которой она создана и не надо никаких заморочек с транзакциями и разделением между сессиями. Более того, локальная временная таблица, созданная в хп, автоматически удаляется при выходе из хп.


Закат солнца вручную - это руками создавать временные таблицы в каждой процедуре.
Локальные переменные на то ли локальные, чтобы быть видимыми только внутри процедуры и удаляться при выходе из процедуры.
3 апр 09, 10:22    [7015745]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
дддддд
по индексу например


Вах, Вах, Вах... Причем тут индексы?! IMHO, Вы слабо себе представляете архитектуру распределенных запросов между двум клиент\серверными СУБД. Локальному оптимизатору запросов на основании парсинга запросов и анализа локальных метаданных и удаленных метаданных надо понять, какой на линкованный сервер надо отправлять запрос, такой:

SELECT
  *
FROM
  database.schema.table1 t2
WHERE
  t2.name LIKE 'SomeString%'

и получив с него данные локально делать, например, MERGE JOIN. Или использовать NESTED LOOPS, дабы на удаленный сервер для каждой записи локального отправлять запрос вида:

SELECT
  *
FROM
  database.schema.table1 t2
WHERE
  t2.name LIKE 'SomeString%' AND
  t2.ID = <SomeID>

Более того, в запросах с Four-Part Names в MS SQL нельзя использовать хинты для объектов на удаленном сервере, ибо локальный оптимизатор не может их использовать при формировании запроса к удаленному серверу. Вот в Pass-Through Queries их можно использовать. Т.е. это ситуация, когда разработчик берет часть работы оптимизатора на себя.

дддддд
Закат солнца вручную - это руками создавать временные таблицы в каждой процедуре.
Локальные переменные на то ли локальные, чтобы быть видимыми только внутри процедуры и удаляться при выходе из процедуры.


Смешались в кучу - кони, люди... ((с) Бородино) Я говорил о локальных временных таблицах, а не о переменных.
3 апр 09, 10:34    [7015834]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SQLMantis
Member

Откуда: Москва
Сообщений: 240
Не ради холивара а общего развития для :)

В MSSQL есть ряд очень удобных для DBA вещей.
1) Можно собрать, так называемым, профайлером все интересующие DBA события на сервере, собрать с помощью Perfmon,а статистику по счетчикам системы.
Затем наложить данные от Perfmon на данные профайлера в виде наглядных графиков.
2) Статистику по многим параметрам работы сервера есть в динамических представлениях и ее можно посмотреть в любой момент.
3) С помощью собранной профайлером статистики можно нагрузить новый MSSQL сервер для прогнозирования его поведения не под абстрактной а под конкретной нагрузкой.

IMHO, MSSQL пользуют много, в том числе и из за большого количества удобств в администрировании.
3 апр 09, 10:52    [7015985]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
Добрались до администрирования...
Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет?
3 апр 09, 11:02    [7016067]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ддддд
Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет?


Аргументы закончились, что-ли? Т.е. Вам нечего больше сказать в части использования временных таблиц при распределенных вычислениях?
3 апр 09, 11:07    [7016105]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SQLMantis
Member

Откуда: Москва
Сообщений: 240
ддддд
Добрались до администрирования...
Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет?


Это я применительно к исходному посту.

Что касается споров о применимости tmp tables то, IMHO, pkarklin в Вашем лице кормит троля :)
3 апр 09, 11:11    [7016140]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
nApoBo3
Member

Откуда:
Сообщений: 72
ИМХО товарищи вы сильно ушли от темы.

Мне кажется, что MS SQL любят за то, что он проще, ОСОБЕННО на начальном этапе освоения.

Мое лично мнение, что у MS SQL очень удобный и очень простой GUI для работы с базами. Хотя сам иногда юзаю TOAD, но родной GUI мне нравиться значительно больше.
Плюс BOL, это просто спасение для новичка.
Взял MS SQL, взял студию и без каких либо дополнительных телодвижении пишешь программы для работы с БД, хоть на шарпе, хоть на VB, хоть на ++.
С другими средами разработки периодически сталкивался с проблемами поиска нормального драйвера к БД. В частности с netbeans.
У MS же все готово и все работает можно сказать из коробки. Плюс родная реализация LINQ, который очень удобен.
C MS, новичок может нормально обучаться в процессе освоения, а когда он обучился, ему уже на, что-то другое, после MS GUI, слезать не хочется, да и не за чем.
Мне лично, у MS SQL не хватает только единого генератора идентификаторов на несколько таблиц.
3 апр 09, 11:47    [7016530]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
pkarklin
ддддд
Хотя спор был о необходимости использования временных таблиц в хранимках, потом перескочили на распреленные базы. Куда дальше понесет?


Аргументы закончились, что-ли? Т.е. Вам нечего больше сказать в части использования временных таблиц при распределенных вычислениях?


Я уже сказал, что временные таблицы - это особенность MS SQL.
Кому-то она нравится, а кому то нет.

Например меня не устраивает в Интербейзе, что для вывода курсора из процедуры надо для каждого поля создавать выходящую переменную и явно укладывать поля запроса в эти переменные.
3 апр 09, 11:51    [7016588]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
дддддд
Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.

:)
Вы знаете, после того, как я после перевода вычищал из портированных с оракла БД все типично оракловые приколы - процедуры становились значительно проще, читабельнее и быстрее :)
3 апр 09, 12:29    [7016918]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30253
дддд
Например меня не устраивает в Интербейзе, что для вывода курсора из процедуры надо для каждого поля создавать выходящую переменную и явно укладывать поля запроса в эти переменные.

в IB/FB нет "вывода курсора из процедуры". есть "селективные" процедуры, которые могут прикидываться "таблицами". А что из них "выводится" - по барабану. Реальные данные из таблиц, view, сложные вычисления, факториал - без разницы.
3 апр 09, 12:29    [7016922]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SQLMantis
Member

Откуда: Москва
Сообщений: 240
nApoBo3
ИМХО товарищи вы сильно ушли от темы.

Мне кажется, что MS SQL любят за то, что он проще, ОСОБЕННО на начальном этапе освоения.

Мое лично мнение, что у MS SQL очень удобный и очень простой GUI для работы с базами. Хотя сам иногда юзаю TOAD, но родной GUI мне нравиться значительно больше.
Плюс BOL, это просто спасение для новичка.
Взял MS SQL, взял студию и без каких либо дополнительных телодвижении пишешь программы для работы с БД, хоть на шарпе, хоть на VB, хоть на ++.
С другими средами разработки периодически сталкивался с проблемами поиска нормального драйвера к БД. В частности с netbeans.
У MS же все готово и все работает можно сказать из коробки. Плюс родная реализация LINQ, который очень удобен.
C MS, новичок может нормально обучаться в процессе освоения, а когда он обучился, ему уже на, что-то другое, после MS GUI, слезать не хочется, да и не за чем.
Мне лично, у MS SQL не хватает только единого генератора идентификаторов на несколько таблиц.


Все правильно! Однако тут еще важно как продукция продвигается на рынок компанией производителем.
В свете этого интересно порассуждать о Sybase ASE и MsSql как пример развития одного продукта в разных компаниях с совершенно разным подходом к развитию продукта и политике его продаж.
3 апр 09, 12:44    [7017067]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
ддддд
Guest
locky
дддддд
Выполнял я проект для одной известной в Москве компании, по переводу базы с MS SQL на Oracle.
Могу с уверенностью сказать, некотороые "сложные" процедуры, которые разработчики не мыслили себе без использования временных таблиц, я заменял процедурами в оракле, состоящими из одного запроса.

:)
Вы знаете, после того, как я после перевода вычищал из портированных с оракла БД все типично оракловые приколы - процедуры становились значительно проще, читабельнее и быстрее :)


Про приколы поподробнее можно?

Интересно, символ "@" перед каждой переменной, в MS SQL ставится для чего?
3 апр 09, 13:24    [7017406]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
ддддд
Интересно, символ "@" перед каждой переменной, в MS SQL ставится для чего?


Да вот для того, чтобы избежать этого: Покритикуйте Оракл 10г
3 апр 09, 13:59    [7017762]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
ддддд
Интересно, символ "@" перед каждой переменной, в MS SQL ставится для чего?

чтобы отличать переменную от имени поля
на самом деле очень удобно - когда большой запрос сразу бросается в глаза

встречный вопрос - таблица DUAL для чего нужна?
3 апр 09, 14:04    [7017819]     Ответить | Цитировать Сообщить модератору
 Re: За что так любят MS MSQL  [new]
rilio
Member

Откуда: С-Петербург
Сообщений: 591
SergSuper
встречный вопрос - таблица DUAL для чего нужна?

Видимо, потому что SELECT без FROM опять же не соответствует стандарту...
http://www.netaktive.org/Norme-SQL3-ANSI-BNF.html
3 апр 09, 14:18    [7017941]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6 7 8 9   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить