Вопрос к DBA MS SQL2k

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

vg писал(а):[
вопрос: это девелоперская база? не продакшен? востановитесь из бакапа и move on. :) если интересено что могло быть... может быть все что угодно вплоть до того, что винт начал сыпаться. читайте логи они рулез. если не сможешь разабраться с логами копируй их сюда, посмотрим, а на кофейной гуще гадать смысла нет. если тут не разберемся и это база тебе супер важна, дам телефон с кодом, позвонишь - тебе расскажут и помогут.
Stranger
Пользователь
Сообщения: 155
Зарегистрирован: 06 май 2006, 11:44

Сообщение Stranger »

папа Карло писал(а): убили на лету -- прям как в сказке. надо четко знать что делали, а не загадками гвоорить -- пойди туда не знаю куда, принеси то, не знаю что. превентится это стандартно... читайте про авайлабилити базы и про то как делается бакап рековери стратегия...
вот-вот, вопрос есть, а предистория к нему как в той сказке, которую папа Карло упомянул
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

папа Карло писал(а):
vg писал(а):[
Логи? Ты серьёзно? 8) Там ничего не пишется, пытался ли кто-нибудь изменить, скажем индекс на работающей базе. Короче, копать буду в сторону статистик по "hind_%" для этих таблиц. Видел такое?
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

dba

Сообщение Yuri Dimant »

Уважемыи vg. Смотрите развели дискуссию на две страницы ,вместо того чтобы показать структуру таблиц и исходные данные. Убедитесь, что нет locking/blocking на таблице. Если это не работает, please post ddl+ sample data+ an expected result

create table t1 (fld char(4))
go
insert into t1 values ('a')
insert into t1 values ('ab')
insert into t1 values ('abc')
insert into t1 values ('abcd')

create table t2 (fld char(4))
go
insert into t2 values ('e')
insert into t2 values ('ek')
insert into t2 values ('abc')
insert into t2 values ('abcd')



--usage
select T2.* from t2 T2, t1 T1 where T2.fld = T1.fld
--or
select T2.* from t2 T2 join t1 T1 on T2.fld = T1.fld
ir
Житель
Сообщения: 876
Зарегистрирован: 19 июл 2004, 23:36
Откуда: Ванкувер

Сообщение ir »

папа Карло писал(а): хммм интересеный момент. :) дистинкт очевидно изменяет то, как выводится результат, что не требуется. что еще более интересно, так это по большим таблицам перформанс лечить с помощью дистинкта... можно объяснить каким образом дистинкт повлияет положительно на производительность?
я просто предположила что если таблицы большие и много общих значений, то получится Cartesian query.
из этого примера:
create table t1 (fld char(4))
go
insert into t1 values ('a')
insert into t1 values ('ab')
insert into t1 values ('abc')
insert into t1 values ('abcd')

create table t2 (fld char(4))
go
insert into t2 values ('e')
insert into t2 values ('ek')
insert into t2 values ('abc')
insert into t2 values ('abcd')

сначала сделайте:
select T2.* from t2 T2, t1 T1 where T2.fld = T1.fld

получите 2 записи,
а потом:
insert into t1 values ('abc')
insert into t1 values ('abcd')
insert into t1 values ('abc')
insert into t1 values ('abcd')
insert into t1 values ('abc')
insert into t1 values ('abcd')

и снова
select T2.* from t2 T2, t1 T1 where T2.fld = T1.fld

сколько записей будет в ризалт сет?
а если
select distinct T2.* from t2 T2, t1 T1 where T2.fld = T1.fld
- то снова 2.

вот я просто подумала, что если таблицы большие...

ну а если маленькие, то можно их пересоздать да и все.
Да! еще попробуйте так:

select T2.* from t2 T2 (nolock), t1 T1 (nolock) where T2.fld = T1.fld
может, блокировка есть если еще кто что с базой делает.
Посмотрите какие объекты заблокированы в этот момент, процессорное время именно этого запроса.
а top 1 тоже не выводится?
и еще - есть такая спец. процедура - выводит данные о каждой таблице и ее индексах - как хранятся, скока блоков занимают и процент фрагментации - навскидку не помню - может, кто вспомнит?
Yuri Dimant
Пользователь
Сообщения: 107
Зарегистрирован: 02 авг 2004, 22:00

dba

Сообщение Yuri Dimant »

Ира, я не скажу за всю Одессу , sql server has
sp_helpindex 'tablename'

USE dbname
DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: dba

Сообщение vg »

Yuri Dimant писал(а):Уважемыи vg. Смотрите развели дискуссию на две страницы ,вместо того чтобы показать структуру таблиц и исходные данные. Убедитесь, что нет locking/blocking на таблице.
Смеётесь, уважаемый? 8) Для изучения того, что произошло я восстановил эту базу в тестинвайромент, перевёл базу в SINGLE_USER моду. Т.е. сейчас кроме меня не работает с базой. Я писал в самом начале, что легко могу выполнять любые операции с этими двумя таблицами по отдельности, в том числе выполнять любые запросы. Не работает join (в любой его версии) по этим двум таблицам.
ПС. Разве я писал пространные постинги на 2 листа в эту нитку? 8) .
Stranger
Пользователь
Сообщения: 155
Зарегистрирован: 06 май 2006, 11:44

Сообщение Stranger »

А возможно ли сделать detach базы лишь с двумя этими таблицами и upload'ить в студию. Желающие поработать со скальпелем (ну, у кого какой инструмент) над пациентом, думаю, нашлись бы, а? Смотришь, кто-нибудь и докопался бы до истины...
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Stranger писал(а):А возможно ли сделать detach базы лишь с двумя этими таблицами и upload'ить в студию. Желающие поработать со скальпелем (ну, у кого какой инструмент) над пациентом, думаю, нашлись бы, а? Смотришь, кто-нибудь и докопался бы до истины...
Ок. Так и сделаем, если завтра (на работе) не смогу восстановить базу.
Stranger
Пользователь
Сообщения: 155
Зарегистрирован: 06 май 2006, 11:44

Сообщение Stranger »

vg писал(а):Ок. Так и сделаем, если завтра (на работе) не смогу восстановить базу.
Раскопаешь - расскажешь, что ж оно было то, хорошо?
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

Stranger писал(а):
vg писал(а):Ок. Так и сделаем, если завтра (на работе) не смогу восстановить базу.
Раскопаешь - расскажешь, что ж оно было то, хорошо?
я все жду когда он про вот это расскажет :)

http://forum.kamorka.com/viewtopic.php?p=103132#103132
Stranger
Пользователь
Сообщения: 155
Зарегистрирован: 06 май 2006, 11:44

Сообщение Stranger »

папа Карло писал(а): я все жду когда он про вот это расскажет :)

http://forum.kamorka.com/viewtopic.php?p=103132#103132
хочешь сказать обещанного три года ждут ;-)
BB
Частый Гость
Сообщения: 41
Зарегистрирован: 02 авг 2005, 16:14
Откуда: Vancouver

Re: Вопрос к DBA MS SQL2k

Сообщение BB »

vg писал(а):DBCC updateusage не выдаёт ошибок.
Может все-таки "DBCC CHECKDB не выдаёт ошибок."?
vg писал(а):DBCC checkdb ('MyDB', REPAIR_REBUILD ) не помогает.
Можно посмотреть на результаты простого DBCC CHECKDB?
Еще, запустить Profiler, чтобы показывал Scan events (и Start и Stop), и посмотреть что-там SQL пытается читать.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: Вопрос к DBA MS SQL2k

Сообщение vg »

BB писал(а):
vg писал(а):DBCC updateusage не выдаёт ошибок.
Может все-таки "DBCC CHECKDB не выдаёт ошибок."?
vg писал(а):DBCC checkdb ('MyDB', REPAIR_REBUILD ) не помогает.
Можно посмотреть на результаты простого DBCC CHECKDB?
Еще, запустить Profiler, чтобы показывал Scan events (и Start и Stop), и посмотреть что-там SQL пытается читать.
Тебя сбило с толку, что ошибки выдаются чем-то, что обязательно "...CHECK..." 8)
На самом деле же, полезен MSDN: http://msdn2.microsoft.com/en-us/librar ... l.80).aspx
Transact-SQL Reference
DBCC UPDATEUSAGE
Reports and corrects inaccuracies in the sysindexes table, which may result in incorrect space usage reports by the sp_spaceused system stored procedure.

<skip>
Result Sets
DBCC UPDATEUSAGE returns this result set for the Northwind database (values may vary):

DBCC UPDATEUSAGE: sysindexes row updated for table 'Orders' (index ID 4):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
DBCC UPDATEUSAGE: sysindexes row updated for table 'Orders' (index ID 5):
USED pages: Changed from (2) to (4) pages.
RSVD pages: Changed from (2) to (4) pages.
'...'
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Stranger писал(а):
папа Карло писал(а): я все жду когда он про вот это расскажет :)

http://forum.kamorka.com/viewtopic.php?p=103132#103132
хочешь сказать обещанного три года ждут ;-)
Товарищи, покойней, пожалуйста. Я только с поезда приехал после вахты. Разрешилось так:

1) выполняем скрипт: http://support.microsoft.com/kb/q293177/.
О похожем написано также здесь: http://www.sql-server-performance.com/i ... d_tips.asp .
Это удалит визардов крап в sysindexes. Это можно посмотреть select * from sysindexes where [name] like 'hind_%' .
2) выполняем sp_updatestats.
3) выполняем dbcc updateusage.

Возможно, первое время производительность может несколько упасть, поскольку будут использованы статистики дефолтовые при компиляции планов запросов. Потом должно наладиться.
Компилятор попадает в луп, когда пытается скомпилироать план "по битым" статистикам по несуществующим индексам. Могу ошибаться в выводах.
Ответить