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

Гость333 уже подтвердил что я нашёл баг. И ничего особенного в этом нет.



+
давайте уже честными будем, а?
Вы не разобрались и пришли спросить себе о том, чего не знали.
Вам повторили (именно Glory) несколько раз то, чего Вы не понимали.
Glory конкретно Вас ни разу не обозвал, и в данной ситуации именно он прав,
как подтвердил Гость333, кроме Оракла остальные СУБД ведут себя так же в отношении повторяющихся индексов,
нигде не заявлено, что их не может быть -> это не баг.
то, что Гость333 пытается внести "мир" в ситуевину (performance bug) для прекращения дебатов, похвально.
но Вы-то чего уже не скажете "всем спасибо" и не успокоитесь?
и вот конкретно зачем обозвали Гарей, Глорей?
и вот это "тыканье" постоянное тоже поднадоело, если честно.
у меня о Вас сложилось впечатление "массовик-затейник" из пионерского отряда,
половина тем пронизана какой-то "крутизной" посетителей семинаров и раздачей медалей "узнавателям персонажей".
Вы вот их может и видели/слышали лично, но блин, Вы их не читали даже в минимальном объеме,
есть чем гордиться, да...
меньше было бы "выворачивания пальцев", меньше бы было растрат времени на привлечение народа
вопросами "несуществующего" собеседования.
задавши конкретный незамаскированный вопрос, можно куда быстрее получить ответ по теме,
без написания 3-х страних, из к-ых одна это выяснение: "так оно было или нет, это собеседование, и кто кого обсобеседил?"
IMHO
19 ноя 13, 14:38    [15154783]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Glory
Гость333
Несомненно. Но если недублированные — это только кандидаты, то дублированные — это уже точно "performance bug", или "performance issue", не знаю как правильно :-)

Только какое отношение все это имеет к констрайнтам и индексам ?
И если я создам недублированный индекс, который не используется ни в одном запросе, то это никак не отразится на performance ?
А вот если создан дублированный, то сразу отразится ?


SandalTree
Я просто писал процедурку по документированию вот мне и стало интересно различие, а когда взялся шерстить другие базы то наткнулся на этот дубликат.
19 ноя 13, 14:39    [15154797]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
o-o
SandalTree
Глоря, вы это сами придумали и сами с собой спорите.

Гость333 уже подтвердил что я нашёл баг. И ничего особенного в этом нет.



+
давайте уже честными будем, а?
Вы не разобрались и пришли спросить себе о том, чего не знали.
Вам повторили (именно Glory) несколько раз то, чего Вы не понимали.
Glory конкретно Вас ни разу не обозвал, и в данной ситуации именно он прав,
как подтвердил Гость333, кроме Оракла остальные СУБД ведут себя так же в отношении повторяющихся индексов,
нигде не заявлено, что их не может быть -> это не баг.
то, что Гость333 пытается внести "мир" в ситуевину (performance bug) для прекращения дебатов, похвально.
но Вы-то чего уже не скажете "всем спасибо" и не успокоитесь?
и вот конкретно зачем обозвали Гарей, Глорей?
и вот это "тыканье" постоянное тоже поднадоело, если честно.
у меня о Вас сложилось впечатление "массовик-затейник" из пионерского отряда,
половина тем пронизана какой-то "крутизной" посетителей семинаров и раздачей медалей "узнавателям персонажей".
Вы вот их может и видели/слышали лично, но блин, Вы их не читали даже в минимальном объеме,
есть чем гордиться, да...
меньше было бы "выворачивания пальцев", меньше бы было растрат времени на привлечение народа
вопросами "несуществующего" собеседования.
задавши конкретный незамаскированный вопрос, можно куда быстрее получить ответ по теме,
без написания 3-х страних, из к-ых одна это выяснение: "так оно было или нет, это собеседование, и кто кого обсобеседил?"
IMHO


Если я случайно назвал Глорю Гарей, то сорри. не хотел.

+

Я старался вести себя очень прилично и никому не "тыкать".

"Собеседование" могло иметь место. Такой вопрос может всплыть у любого и возможно теперь кто-то его задаст. Разве не так?

Я всё это прошерстил ДО того как задать вопрос, но мне нужно было просто убедиться что я на верном пути.
Спасибо что подтвердили.

Если кто-то вдруг ненароком подумал что я не знаю чем отличаются PRIMARY KEY от UNIQUE CONSTRAINT, то он заблуждался.


И кстати, тут ещё не до конца раскрыли "разницу" чем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX, кроме как
автор
UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT
Что-б не томить общественность понапрасну сам скажу:
Индекс может иметь INCLUDED Columns, а UC нет.


19 ноя 13, 15:08    [15155050]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
Первый же ответ был полным и правильным.
Не нужно устраивать из собеседования викторину "Угадай, какую тонкость реализации правильно/неправильно я вспомнил"
19 ноя 13, 15:25    [15155191]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
o-o
Guest
SandalTree

И кстати, тут ещё не до конца раскрыли "разницу" чем отличается UNIQUE CONSTRAINT от UNIQUE NONCLUSTERED INDEX, кроме как
автор
UNIQUE CONSTRAINT - это декларация уникальности
UNIQUE NONCLUSTERED INDEX - это физическая реализация UNIQUE CONSTRAINT
Что-б не томить общественность понапрасну сам скажу:
Индекс может иметь INCLUDED Columns, а UC нет.




не, ну я из темы удаляюсь.
Вы сравниваете абстрактное(декларативное в нашем случае) понятие с конкретными(физическими) сущностями.

да, unique-констрейнты реализуются через индексы.
НО индексы изобрели не только для этого.
о чем вообще спор?

типа:
-- какие вы знаете способы наземной транспортировки людей?
-- поезда

-- а давайте перечислим отличия поездов от способов наземной транспортировки людей!!!
Glory: "способы" -- это нечто абстрактное, реализовано поездами, обсуждать отличия некорректно.
SandalTree: а вот я продолжу, про отличия. поезда, они еще и почтово-багажные бывают!
19 ноя 13, 15:31    [15155248]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
SandalTree
Если я случайно назвал Глорю Гарей, то сорри. не хотел.


если вы не в курсе, "недокументированный" перевод, или вольная транслитерация ника вполне является оскорблением в интернете.
вполне возможно, что для вас сочетания «ДеревоСандальского, МасляноеДерево, СанделТришкин» не будут являться обидными, но подобное коверканье выглядит, по крайней мере, некрасивым.
19 ноя 13, 15:39    [15155320]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
SandalTree
В таблице но одном и том же поле построено абсолютно два одинаковых индекса, один из которых создан как Unique Constraint, а другой как Unique Index.

В чём смысл наличия обоих индексов - вот мой вопрос.
Очень просто. Это Enterprise, а не RDBS в вакууме.

Индексы это не только механизм для чего-то (контроль уникальности), это ещё головная боль для админов.
С потолка - надо перенести индекс в реальном времени при высокой доступности и не убить уникальность (для запросов) в период переноса.

Поэтому путём уменьшения контроля и не расширения функционала разрабы добиваются повышенной гибкости системы.
Андестуд?!

SandalTree, считайте это багом - ваше правр, но вашу кошерную RDBS с трушными панятиями я бы ни за что не купил.
19 ноя 13, 18:00    [15156616]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
StarikNavy
SandalTree
Если я случайно назвал Глорю Гарей, то сорри. не хотел.


если вы не в курсе, "недокументированный" перевод, или вольная транслитерация ника вполне является оскорблением в интернете.
вполне возможно, что для вас сочетания «ДеревоСандальского, МасляноеДерево, СанделТришкин» не будут являться обидными, но подобное коверканье выглядит, по крайней мере, некрасивым.
Может быть вы немного не в теме, на скуле есть два очень уважаемых мною ника Garya и Glory. Если я их нечаянно попутал вы теперь над моим ником упражняться будете?
19 ноя 13, 20:07    [15157118]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
o-o
не, ну я из темы удаляюсь.
Вы сравниваете абстрактное(декларативное в нашем случае) понятие с конкретными(физическими) сущностями.


Да всё я понимаю, это как "борьба слона с китом".

Какая-б не была сущность декларативная или физическая, но когда у тебя есть конкретная задача у тебя стоит вопрос "что применить?". И только зная точные различия между ними можно принять правильное решение.
19 ноя 13, 20:16    [15157156]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Mnior
SandalTree
В таблице но одном и том же поле построено абсолютно два одинаковых индекса, один из которых создан как Unique Constraint, а другой как Unique Index.

В чём смысл наличия обоих индексов - вот мой вопрос.
Очень просто. Это Enterprise, а не RDBS в вакууме.


Это хорошее обьяснение. Самое замечательное в нём что можно оправдать ЛЮБОЙ ляп.
19 ноя 13, 20:18    [15157163]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
o-o
Guest
у меня та же картина, вот скриптец этой таблицы
+
CREATE TABLE [dbo].[log_shipping_primary_databases](
	[primary_id] [uniqueidentifier] NOT NULL,
	[primary_database] [sysname] NOT NULL,
	[backup_directory] [nvarchar](500) NOT NULL,
	[backup_share] [nvarchar](500) NOT NULL,
	[backup_retention_period] [int] NOT NULL,
	[backup_job_id] [uniqueidentifier] NOT NULL,
	[monitor_server] [sysname] NOT NULL,
	[user_specified_monitor] [bit] NULL,
	[monitor_server_security_mode] [bit] NOT NULL,
	[last_backup_file] [nvarchar](500) NULL,
	[last_backup_date] [datetime] NULL,
	[backup_compression] [tinyint] NOT NULL,
PRIMARY KEY CLUSTERED 
(
	[primary_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY],
UNIQUE NONCLUSTERED 
(
	[primary_database] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


USE [msdb]
/****** Object:  Index [nc1lsprimary_databases]    Script Date: 11/19/2013 20:08:20 ******/
CREATE NONCLUSTERED INDEX [nc1lsprimary_databases] ON [dbo].[log_shipping_primary_databases] 
(
	[monitor_server] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO


USE [msdb]
/****** Object:  Index [nc2lsprimary_databases]    Script Date: 11/19/2013 20:08:20 ******/
CREATE NONCLUSTERED INDEX [nc2lsprimary_databases] ON [dbo].[log_shipping_primary_databases] 
(
	[user_specified_monitor] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO


USE [msdb]
/****** Object:  Index [uc1lsprimary_databases]    Script Date: 11/19/2013 20:08:20 ******/
CREATE UNIQUE NONCLUSTERED INDEX [uc1lsprimary_databases] ON [dbo].[log_shipping_primary_databases] 
(
	[primary_database] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

ALTER TABLE [dbo].[log_shipping_primary_databases] ADD  DEFAULT ((2)) FOR [backup_compression]
GO

ну а что, ляп он и есть ляп.
может, 2 разных человека писало: один определение таблиц,
другой им всем индексы.
а может, один и тот же, но спустя 2 часа
бывает же, отвлекут, сообщат что-то "хорошее", вернешься к компу уже другим человеком

не то, чтобы "не рой яму другому",
но примерно так: оставили возможность дублировать индексы, сами в свою же лужу и сели.
напишите гражданке Kimberly Tripp, может, это ей поможет пропихнуть идею запрета задвоения индексов МС-овцам
19 ноя 13, 23:28    [15157887]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
в скуле в системных объектах вообще можно найти много замечательных моментов
ничего удивительного - писано всё это людьми, долгие годы, "работает - не трогай"
19 ноя 13, 23:47    [15157995]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
o-o
ну а что, ляп он и есть ляп.
может, 2 разных человека писало: один определение таблиц,
другой им всем индексы.
а может, один и тот же, но спустя 2 часа
бывает же, отвлекут, сообщат что-то "хорошее", вернешься к компу уже другим человеком

не то, чтобы "не рой яму другому",
но примерно так: оставили возможность дублировать индексы, сами в свою же лужу и сели.
напишите гражданке Kimberly Tripp, может, это ей поможет пропихнуть идею запрета задвоения индексов МС-овцам

А она что, не знает?

Может быть существует сценарий, которого мы не знаем, когда задвоение помогает или необходимо.
20 ноя 13, 00:18    [15158177]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
SandalTree

Может быть существует сценарий, которого мы не знаем, когда задвоение помогает или необходимо.
ONLINE INDEX REBUILD?
20 ноя 13, 02:08    [15158662]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
o-o
Guest
SandalTree
А она что, не знает?

я думаю, ей и так есть, чем заняться, кроме как ходить-проверять, какие там индексы на таблицах в msdb.
да и другие вряд ли заметили:
log_shipping_primary_databases Stores one record for the primary database in a log shipping configuration.
это сколько ж надо баз залогшипить, чтоб тормоза на этой таблице прочувствовать?
20 ноя 13, 02:23    [15158703]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Mind
SandalTree
Может быть существует сценарий, которого мы не знаем, когда задвоение помогает или необходимо.
ONLINE INDEX REBUILD?

Вы это имели в виду?
Use TempDB
GO
CREATE TABLE B(F1 Char(1)  NOT NULL, CONSTRAINT UC_B UNIQUE (F1));
GO
INSERT INTO B(F1) VALUES ('A'), ('B')
GO
CREATE NONCLUSTERED INDEX NCIX_B ON B(F1)
GO
ALTER INDEX [UC_B] ON [dbo].[B] REBUILD WITH (ONLINE = ON)
GO
ALTER INDEX [NCIX_B] ON [dbo].[B] REBUILD WITH (ONLINE = ON)
GO
DROP TABLE B
20 ноя 13, 06:45    [15158829]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
o-o
SandalTree
А она что, не знает?

я думаю, ей и так есть, чем заняться, кроме как ходить-проверять, какие там индексы на таблицах в msdb.
да и другие вряд ли заметили:
log_shipping_primary_databases Stores one record for the primary database in a log shipping configuration.
это сколько ж надо баз залогшипить, чтоб тормоза на этой таблице прочувствовать?
Ну вот, ей и так есть чем заняться, зачем её понапрасну беспокоить.

Проблема выеденного яйца не стоит.
Я-б сравнил её с царапиной на ядерной боеголовке, ни на скорость ни на силу заряда она не влияет. Лишь коробит чувства генералов при проверке.
20 ноя 13, 06:50    [15158830]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Mind
SandalTree
Может быть существует сценарий, которого мы не знаем, когда задвоение помогает или необходимо.
ONLINE INDEX REBUILD?

А чем тут поможет задвоение индексов?
20 ноя 13, 08:50    [15158968]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
o-o
Guest
Гость333,

при онлайновом ребилде он не в таблицу лезет, а строит новый некластерный, используя старый некластерный
20 ноя 13, 08:56    [15158974]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Glory
И если я создам недублированный индекс, который не используется ни в одном запросе, то это никак не отразится на performance ?
А вот если создан дублированный, то сразу отразится ?

Негативно отразятся и тот, и другой.

Я имел в виду, что если по показаниям sys.dm_db_index_usage_stats недублированный индекс не используется, это не значит, что его тут же можно удалять. Он становится кандидатом на удаление, требует дальнейшего анализа.

Пример — один "молодой, горячий" DBA заказчика прислал список не использующихся индексов (по показаниям sys.dm_db_index_usage_stats). Анализ списка, длившийся больше половины рабочего дня, показал:
— некоторые индексы используются в месячных/квартальных отчётах, а аптайм сервера был около трёх недель, и статистика ещё не захватила построение этих отчётов;
— некоторые индексы были построены на таблицах вида DATA_2008_05 (некие данные были секционированы — по одной таблице на каждый месяц). Обращение к старым данным могло требоваться крайне редко — и попадания индекса в статистику использования пришлось бы ждать долго;
— но всё же два или три индекса по результатам анализа были удалены.

А если бы в этом списке были дублированные индексы — то и анализ бы не требовался. Сразу можно было бы писать скрипт на удаление одного из индексов, да ещё поискать в исходном коде возможные хинты с использованием удаляемого индекса и заменить на оставшийся индекс.
20 ноя 13, 09:13    [15159013]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
aleks2
Guest
SandalTree
Чем отличается PRIMARY KEY от UNIQUE CONSTRAINT?


Правильный ответ, за который надо сразу брать на работу:

НИЧЕМ, кроме названия и мелких, несущественных деталей.
20 ноя 13, 09:14    [15159018]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
SandalTree
Если я их нечаянно попутал вы теперь над моим ником упражняться будете?

за нечаянно бью отчаянно (С) :)
тогда приношу свои извинения
20 ноя 13, 09:44    [15159123]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Glory
Member

Откуда:
Сообщений: 104751
SandalTree
Какая-б не была сущность декларативная или физическая, но когда у тебя есть конкретная задача у тебя стоит вопрос "что применить?". И только зная точные различия между ними можно принять правильное решение.

Мда.
Constraint-ы применяются для обеспечения data integrity.
Индексы применяют для улучшения производительности.
И это разные по своим целям задачи.
20 ноя 13, 11:04    [15159723]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
SandalTree
Member

Откуда: Перехлёсток восьми батог
Сообщений: 28146
Glory
SandalTree
Какая-б не была сущность декларативная или физическая, но когда у тебя есть конкретная задача у тебя стоит вопрос "что применить?". И только зная точные различия между ними можно принять правильное решение.

Мда.
Constraint-ы применяются для обеспечения data integrity.
Индексы применяют для улучшения производительности.
И это разные по своим целям задачи.

Согласен на 100 %

Но приведу пример. Есть табличка с UNIQUE CONSTRAINT
CREATE TABLE B(F1 Char(1)  NOT NULL, F2 Char(2), F3 INT, CONSTRAINT UC_B UNIQUE (F1,F2));
GO
INSERT INTO B(F1,F2,F3) VALUES ('A','C',1), ('B','D',2), ('B','E',3), ('A','E',4);
У тебя тормозит запрос
SELECT F1,F2,F3 FROM B WHERE F2 = 'E'
Есть вариант создать индекс
CREATE UNIQUE NONCLUSTERED INDEX NCIX_B ON B(F2,F1) INCLUDE(F3);
Который решит проблему, но тогда первый индекс, созданый констрэйнтом использоваться уже не будет, а будет только занимать место и тормозить вставку.
На маленьких табличках это возможно и ничего, но если у тебя 100 миллионов записей, а в уникальную группу входят несколько полей, то это очень существенно.
20 ноя 13, 17:56    [15163744]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос на собеседовании  [new]
Glory
Member

Откуда:
Сообщений: 104751
SandalTree
Который решит проблему, но тогда первый индекс, созданый констрэйнтом использоваться уже не будет

Что значит "не будет" ?
Еще как будет. Для чего тогда CONSTRAINT то создавался ?
20 ноя 13, 18:43    [15164111]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить