Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
 Re: Встреча с разработчиками SQL Server  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
гавнакод,

Вот здесь тоже описывают сие поведение тынц
6 ноя 14, 17:39    [16807715]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
гавнакод
Guest
Maxx
гавнакод,

Вот здесь тоже описывают сие поведение тынц


а я честно говоря не представляю, как можно накатить записи журнала многопоточно? ведь они должны быть накачены в той последовательности, как записаны...
6 ноя 14, 17:59    [16807816]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
гавнакод
Maxx
гавнакод,

Вот здесь тоже описывают сие поведение тынц


а я честно говоря не представляю, как можно накатить записи журнала многопоточно? ведь они должны быть накачены в той последовательности, как записаны...
Если данные меняются в двух разных страницах данных, то вполне можно в два потока.
6 ноя 14, 18:09    [16807862]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
Shakill
маловероятно, но все же: использование инлайн табличных типов. то есть, возможность в качестве параметра использовать тип, объявленный в самом объявлении процедуры/функции, а не созданный заранее через CREATE TYPE.

и второе - объявление выходных параметров табличного же типа

-- пример сразу по обоим пунктам
CREATE PROCEDURE MyProc(@a table (a int, b int) OUTPUT)
AS
BEGIN
    INSERT @a (...)
    SELECT ...
END

...

DECLARE @t table(a int, b int)

...

EXEC dbo.MyProc @a = @t OUTPUT


+1
6 ноя 14, 18:50    [16808025]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Гавриленко Сергей Алексеевич
гавнакод
пропущено...


а я честно говоря не представляю, как можно накатить записи журнала многопоточно? ведь они должны быть накачены в той последовательности, как записаны...
Если данные меняются в двух разных страницах данных, то вполне можно в два потока.
Можно. Там как раз драйверы могут фактически не поддерживать многопоточность.
Вернусь - поговорим более предметно.

Про языковые возможности - я удочки закинул, пока ответа нет, но вряд ли это будет быстрый процесс в любом случае...
Независимо от этого - пишите тут конкретные потребности в языке, если и не добьемся чего, то хоть выговоримся... Но вода камень точит...
7 ноя 14, 00:54    [16809530]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Shakill
маловероятно, но все же: использование инлайн табличных типов. то есть, возможность в качестве параметра использовать тип, объявленный в самом объявлении процедуры/функции, а не созданный заранее через CREATE TYPE.

и второе - объявление выходных параметров табличного же типа
-- пример сразу по обоим пунктам
CREATE PROCEDURE MyProc(@a table (a int, b int) OUTPUT)
AS
BEGIN
    INSERT @a (...)
    SELECT ...
END
Я бы сказал, что первое гораздо вероятнее, чем второе. :)
Первое можно сделать просто небольшой доработкой в парсинге единственного скрипта, второе - требует сверки структур в вызывающем и вызываемом коде.

Но предложение вкусное.
7 ноя 14, 00:59    [16809549]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8877
DeColo®es
Shakill
маловероятно, но все же: использование инлайн табличных типов. то есть, возможность в качестве параметра использовать тип, объявленный в самом объявлении процедуры/функции, а не созданный заранее через CREATE TYPE.

и второе - объявление выходных параметров табличного же типа
-- пример сразу по обоим пунктам
CREATE PROCEDURE MyProc(@a table (a int, b int) OUTPUT)
AS
BEGIN
    INSERT @a (...)
    SELECT ...
END
Я бы сказал, что первое гораздо вероятнее, чем второе. :)
Первое можно сделать просто небольшой доработкой в парсинге единственного скрипта, второе - требует сверки структур в вызывающем и вызываемом коде.

Но предложение вкусное.

Ага, вкусное.
Только вот: "Как на Киевском вокзале мы купили пирожок..." В общем, пирожку уже десять лет.... (Ну всё равно я уже заплюсовал, чо)

PS Антибан: хотелось бы некую структуру для НЕтранзакционного хранения данных,- что-то вроде того, как мы пишем протокол во внешний файл, когда хотим журналировать действия кого-либо над базой, но эти действия завершаются роллбэком транзакции,- после чего все ВНУТРЕННИЕ механизмы скуля (кроме табличных переменных и identity :-) ) как-бы "забывают" о попытке произвести какие-либо изменения. А хотелось бы иметь внутреннее "говнохранилище" подобных "говноданных" (пусть даже и в очень обрезанном виде, но зато с возможностью гонять их "и в хвост и в гриву" операторами T-SQL).
7 ноя 14, 05:11    [16809754]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
SIMPLicity_
хотелось бы некую структуру для НЕтранзакционного хранения данных,- что-то вроде того, как мы пишем протокол во внешний файл, когда хотим журналировать действия кого-либо над базой, но эти действия завершаются роллбэком транзакции,- после чего все ВНУТРЕННИЕ механизмы скуля (кроме табличных переменных и identity :-) ) как-бы "забывают" о попытке произвести какие-либо изменения.

Я писал об этом выше - автономные транзакции, есть в том же оракле.
7 ноя 14, 06:07    [16809805]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Wlr-l
Member

Откуда:
Сообщений: 599
DeColo®es,

Если языковые возможности, то, например, более гибко задавать параметр RANGE экстента оконного кадра.
7 ноя 14, 10:00    [16810261]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
Гавриленко Сергей Алексеевич
Если данные меняются в двух разных страницах данных, то вполне можно в два потока.

Писать одновременно в один файл в 2 потока?
7 ноя 14, 12:00    [16810904]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10802
Блог
гавнакод
Maxx
гавнакод,

Вот здесь тоже описывают сие поведение тынц


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


Давно уже пора уйти от атавизма в виде одного последовательного журнала для базы. Это было терпимо, когда доступ к буферному пулу был симметричным для всех сессий. Современные сервера давно не такие, везде NUMA и работа секционируется по узлам. Каждый узел может иметь свой последовательный журнал, если обеспечить целостность транзакций, в которых затрагиваются страницы другого узла (дальние). Таким образом, можно поднять производительность последней фазы восстановления журнала в разы.
Думаю, у разработчиков SOS появится достаточно идей, как реализовать тут многопоточность и оптимизировать сам процесс.
Ещё один атавизм - это невозможность отключить подтирание диска для приращения файла журнала. Что бы в VLDB снизить число LSN нужно увеличивать размер для автоприащения, а это сейчас затруднено. Получается патовая ситуация.

Сообщение было отредактировано: 7 ноя 14, 12:12
7 ноя 14, 12:08    [16810969]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
Shakill
маловероятно, но все же: использование инлайн табличных типов. то есть, возможность в качестве параметра использовать тип, объявленный в самом объявлении процедуры/функции, а не созданный заранее через CREATE TYPE.

и второе - объявление выходных параметров табличного же типа

-- пример сразу по обоим пунктам
CREATE PROCEDURE MyProc(@a table (a int, b int) OUTPUT)
AS
BEGIN
    INSERT @a (...)
    SELECT ...
END

...

DECLARE @t table(a int, b int)

...

EXEC dbo.MyProc @a = @t OUTPUT

1. То есть объявлять тип где то поближе к объявлению процедуры, а не глобальный, например на уровне пакета как в oracle?
2. Если уже речь заходит об анонимных типах, то нужен вывод типов.
CREATE PROCEDURE MyProc(@a table  OUTPUT)
AS
BEGIN
    INSERT @a (...) -- тут вывод типа table по списку столбцов из select!
    SELECT ...
END

...

DECLARE @t table(a int, b int)

...

EXEC dbo.MyProc @a = @t OUTPUT

3. Хорошо бы опять же как в oracle уметь назначить тип из типа таблицы
declare @x table1%rowtype.
7 ноя 14, 12:20    [16811038]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
ЕвгенийВ
1. То есть объявлять тип где то поближе к объявлению процедуры, а не глобальный, например на уровне пакета как в oracle?
тип не объявлять вообще, а просто описать табличный параметр в заголовке процедуры, как в моем примере. тогда у типа не будет имени, но в качестве аргумента при вызове можно будет использовать табличную переменную, объявленную так же как этот параметр.
обоснование - текущая реализация неудобна. представьте, что для каждого варианта строковых параметров требовалось бы создавать отдельный тип, вроде CREATE TYPE PostIndex FROM CHAR(6)
7 ноя 14, 12:39    [16811186]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
Shakill
тогда у типа не будет имени, но в качестве аргумента при вызове можно будет использовать табличную переменную, объявленную так же как этот параметр.
обоснование - текущая реализация неудобна. представьте, что для каждого варианта строковых параметров требовалось бы создавать отдельный тип, вроде CREATE TYPE PostIndex FROM CHAR(6)

А как такую процедуру вызвать например из PHP?
7 ноя 14, 13:06    [16811515]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
ЕвгенийВ
Shakill
тогда у типа не будет имени, но в качестве аргумента при вызове можно будет использовать табличную переменную, объявленную так же как этот параметр.
обоснование - текущая реализация неудобна. представьте, что для каждого варианта строковых параметров требовалось бы создавать отдельный тип, вроде CREATE TYPE PostIndex FROM CHAR(6)

А как такую процедуру вызвать например из PHP?

сначала появляется возможность в SQL сервере, через некоторое время при востребованности появляется поддержка в смежных продуктах, ведь так? в Delphi 7 + ADO с табличными параметрами нельзя было работать вообще, например
7 ноя 14, 13:27    [16811732]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
мимо
Guest
ЕвгенийВ
Shakill
маловероятно, но все же: использование инлайн табличных типов. то есть, возможность в качестве параметра использовать тип, объявленный в самом объявлении процедуры/функции, а не созданный заранее через CREATE TYPE.

и второе - объявление выходных параметров табличного же типа

-- пример сразу по обоим пунктам
CREATE PROCEDURE MyProc(@a table (a int, b int) OUTPUT)
AS
BEGIN
    INSERT @a (...)
    SELECT ...
END

...

DECLARE @t table(a int, b int)

...

EXEC dbo.MyProc @a = @t OUTPUT

1. То есть объявлять тип где то поближе к объявлению процедуры, а не глобальный, например на уровне пакета как в oracle?
2. Если уже речь заходит об анонимных типах, то нужен вывод типов.
CREATE PROCEDURE MyProc(@a table  OUTPUT)
AS
BEGIN
    INSERT @a (...) -- тут вывод типа table по списку столбцов из select!
    SELECT ...
END

...

DECLARE @t table(a int, b int)

...

EXEC dbo.MyProc @a = @t OUTPUT

3. Хорошо бы опять же как в oracle уметь назначить тип из типа таблицы
declare @x table1%rowtype.

Нафига портить хорошую весчь? Делать второй оракл, может ещё и оракловую транзакционную модель, курсоры и т.д. и т.п.? Если надо писать сложную бизнес-логику - используй сервер приложений. Хочешь хоститься под mssql - есть интеграция со средой clr. Там всё пишется на процедурных языках.
Партиции сделать вменяемые-это правильно, и чтоб планы выполнения показывал реальные, а не как придется (касаемо скаляров), индексы допилить. Т.е. допиливать реляционную субд, а не делать суррогат.
Хотя может, с точки зрения маркетинга - главное много примочек.
7 ноя 14, 13:43    [16811860]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
мимо
может ещё и оракловую транзакционную модель,

Где почитать про отличие транзакционной модели oracle и sql server?
7 ноя 14, 14:57    [16812341]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
гавнакод
Guest
Александр Гладченко
гавнакод
пропущено...


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


Давно уже пора уйти от атавизма в виде одного последовательного журнала для базы. Это было терпимо, когда доступ к буферному пулу был симметричным для всех сессий. Современные сервера давно не такие, везде NUMA и работа секционируется по узлам. Каждый узел может иметь свой последовательный журнал, если обеспечить целостность транзакций, в которых затрагиваются страницы другого узла (дальние). Таким образом, можно поднять производительность последней фазы восстановления журнала в разы.
Думаю, у разработчиков SOS появится достаточно идей, как реализовать тут многопоточность и оптимизировать сам процесс.
Ещё один атавизм - это невозможность отключить подтирание диска для приращения файла журнала. Что бы в VLDB снизить число LSN нужно увеличивать размер для автоприащения, а это сейчас затруднено. Получается патовая ситуация.


я понял про разные страницы, спасибо. интересно время на координацию потоков не перевесит? а что они понимают под Parallel Redo в enterprise edition для mirroring, например? не это же? с остальным - интересные идеи, конечно. в oracle тож активная только одна журнальная группа (считай один файл, просто зазеркаленый)
7 ноя 14, 15:04    [16812404]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
гавнакод
Guest
ЕвгенийВ
мимо
может ещё и оракловую транзакционную модель,

Где почитать про отличие транзакционной модели oracle и sql server?


ну read committed snapshot и snapshot очень похожи на оракловые isolation levels. но например реализовано по разному:

sql server - row store (tempdb), oracle - undo tablespace
в sql server инфа для отката транзакций пишется в записи транзакшн лога, в oracle в undo tablespace.

в sql server -транзакшн лог на все про все redo/undo инфа пишется в один файл, в oracle в две разные сущности redo log и undo tblspace.

также в oracle можно создать группы redo log'ов и несколько их, активна в данный момент только одна. соответственно группы логов могут лежать на разных шпинделях и arc процесс может архивировать их (читать) и не мешать lgwr писать в активную группу. также есть mu;tiplexing. в sql server этого ничего нет. все юзают один файл, а если файлов N то они рассматриваются как неприрывное кольцо... такие пирожки.
7 ноя 14, 15:10    [16812455]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
гавнакод,
спс. на выходные почитаю, что старик Кайт по этому поводу пишет.
7 ноя 14, 15:21    [16812542]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Александр Гладченко
гавнакод
пропущено...


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


Давно уже пора уйти от атавизма в виде одного последовательного журнала для базы. Это было терпимо, когда доступ к буферному пулу был симметричным для всех сессий. Современные сервера давно не такие, везде NUMA и работа секционируется по узлам. Каждый узел может иметь свой последовательный журнал, если обеспечить целостность транзакций, в которых затрагиваются страницы другого узла (дальние). Таким образом, можно поднять производительность последней фазы восстановления журнала в разы.
Думаю, у разработчиков SOS появится достаточно идей, как реализовать тут многопоточность и оптимизировать сам процесс.
Ещё один атавизм - это невозможность отключить подтирание диска для приращения файла журнала. Что бы в VLDB снизить число LSN нужно увеличивать размер для автоприащения, а это сейчас затруднено. Получается патовая ситуация.
Логи банально можно было поделить по файловым группам.
7 ноя 14, 16:16    [16812960]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
GordonF
Member

Откуда:
Сообщений: 39
Александр Гладченко,
Вспомнил! В оракле- recovery_parallelism. Только толку от него...поэтому наказывается
усё последовательно. Накатить 250-300Гб дневных логов- оставлял на ночь :).
7 ноя 14, 16:43    [16813157]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
GordonF
Member

Откуда:
Сообщений: 39
Гавриленко Сергей Алексеевич,
А заполняться- то будут последовательно...или я не прав?
7 ноя 14, 16:45    [16813166]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
GordonF
Member

Откуда:
Сообщений: 39
гавнакод,

Но и секаса в оракле с этими логами поболее и в скуле такого шайтана лог не устраивает.
Я r-man так и не осилил по полной :(.
После sql'я оракловыя система бакапирования- был разрыв шаблона :).

Щас снова на скуле.
Работал с ораклом -не хватало плюшек MSSQL, щас не хватает плюшек Oracle
7 ноя 14, 16:54    [16813221]     Ответить | Цитировать Сообщить модератору
 Re: Встреча с разработчиками SQL Server  [new]
prog123
Guest
1. Создать 2-й диалект ms sql и не латать дырки в ущербном и смешном изначально языке.
2. Стремиться к минимуму администрирования, и в идеале - совсем без него.
7 ноя 14, 17:41    [16813461]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить