вопрос: это девелоперская база? не продакшен? востановитесь из бакапа и move on.vg писал(а):[
Вопрос к DBA MS SQL2k
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
Stranger
- Пользователь
- Сообщения: 157
- Зарегистрирован: 06 май 2006, 11:44
вот-вот, вопрос есть, а предистория к нему как в той сказке, которую папа Карло упомянулпапа Карло писал(а): убили на лету -- прям как в сказке. надо четко знать что делали, а не загадками гвоорить -- пойди туда не знаю куда, принеси то, не знаю что. превентится это стандартно... читайте про авайлабилити базы и про то как делается бакап рековери стратегия...
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
-
Yuri Dimant
- Пользователь
- Сообщения: 107
- Зарегистрирован: 02 авг 2004, 22:00
dba
Уважемыи 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
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
- Откуда: Ванкувер
я просто предположила что если таблицы большие и много общих значений, то получится 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
Ира, я не скажу за всю Одессу , sql server has
sp_helpindex 'tablename'
USE dbname
DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES
sp_helpindex 'tablename'
USE dbname
DBCC SHOWCONTIG WITH TABLERESULTS, ALL_INDEXES
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Re: dba
Смеётесь, уважаемый?Yuri Dimant писал(а):Уважемыи vg. Смотрите развели дискуссию на две страницы ,вместо того чтобы показать структуру таблиц и исходные данные. Убедитесь, что нет locking/blocking на таблице.
ПС. Разве я писал пространные постинги на 2 листа в эту нитку?
-
Stranger
- Пользователь
- Сообщения: 157
- Зарегистрирован: 06 май 2006, 11:44
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Ок. Так и сделаем, если завтра (на работе) не смогу восстановить базу.Stranger писал(а):А возможно ли сделать detach базы лишь с двумя этими таблицами и upload'ить в студию. Желающие поработать со скальпелем (ну, у кого какой инструмент) над пациентом, думаю, нашлись бы, а? Смотришь, кто-нибудь и докопался бы до истины...
-
Stranger
- Пользователь
- Сообщения: 157
- Зарегистрирован: 06 май 2006, 11:44
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
я все жду когда он про вот это расскажетStranger писал(а):Раскопаешь - расскажешь, что ж оно было то, хорошо?vg писал(а):Ок. Так и сделаем, если завтра (на работе) не смогу восстановить базу.
http://forum.kamorka.com/viewtopic.php?p=103132#103132
-
Stranger
- Пользователь
- Сообщения: 157
- Зарегистрирован: 06 май 2006, 11:44
хочешь сказать обещанного три года ждутпапа Карло писал(а): я все жду когда он про вот это расскажет
http://forum.kamorka.com/viewtopic.php?p=103132#103132
-
BB
- Частый Гость
- Сообщения: 41
- Зарегистрирован: 02 авг 2005, 16:14
- Откуда: Vancouver
Re: Вопрос к DBA MS SQL2k
Может все-таки "DBCC CHECKDB не выдаёт ошибок."?vg писал(а):DBCC updateusage не выдаёт ошибок.
Можно посмотреть на результаты простого DBCC CHECKDB?vg писал(а):DBCC checkdb ('MyDB', REPAIR_REBUILD ) не помогает.
Еще, запустить Profiler, чтобы показывал Scan events (и Start и Stop), и посмотреть что-там SQL пытается читать.
-
vg
- Маньяк
- Сообщения: 2803
- Зарегистрирован: 29 май 2003, 22:29
- Откуда: Магадан - Миссиссага
Re: Вопрос к DBA MS SQL2k
Тебя сбило с толку, что ошибки выдаются чем-то, что обязательно "...CHECK..."BB писал(а):Может все-таки "DBCC CHECKDB не выдаёт ошибок."?vg писал(а):DBCC updateusage не выдаёт ошибок.
Можно посмотреть на результаты простого DBCC CHECKDB?vg писал(а):DBCC checkdb ('MyDB', REPAIR_REBUILD ) не помогает.
Еще, запустить Profiler, чтобы показывал Scan events (и Start и Stop), и посмотреть что-там SQL пытается читать.
На самом деле же, полезен 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
- Откуда: Магадан - Миссиссага
Товарищи, покойней, пожалуйста. Я только с поезда приехал после вахты. Разрешилось так: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.
Возможно, первое время производительность может несколько упасть, поскольку будут использованы статистики дефолтовые при компиляции планов запросов. Потом должно наладиться.
Компилятор попадает в луп, когда пытается скомпилироать план "по битым" статистикам по несуществующим индексам. Могу ошибаться в выводах.