Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
выполняю ребилд индекса:
alter index _Refere2575_VT2644_IntKeyInd on dbo._Reference2575_VT2644 REBUILD;

успешно.

после ребилда смотрю колонку avg_fragmentation_in_percent и замечаю, что после
ребилда она увеличивается. я не понимаю, почему так происходит?

USE ItiliumOLD;
GO
-- Find the average fragmentation percentage of all indexes
-- in the HumanResources.Employee table. 
SELECT b.name,   a.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats 
(DB_ID('ItiliumOLD'), NULL, NULL, NULL, 'DETAILED') AS a
    JOIN sys.indexes AS b 
    ON a.object_id = b.object_id 
    AND a.index_id = b.index_id
    and avg_fragmentation_in_percent >30
    ; 
GO


проверял ещё так:
SELECT * FROM sys.dm_db_index_physical_stats
    (DB_ID('ItiliumOLD'), OBJECT_ID('_Reference2575_VT2644'), NULL, NULL , 'DETAILED');
    go


чем чаще выполняю ребилд, тем выше значение для avg_fragmentation_in_percent
28 июн 13, 14:24    [14497439]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
dm_db_index_physical_stats,

Размер индекса какой? Маленькие объекты перестраивать бесполезно.
28 июн 13, 14:44    [14497589]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
Ennor Tiegael
dm_db_index_physical_stats,

Размер индекса какой? Маленькие объекты перестраивать бесполезно.

таблица, к которой относится этот индекс содержит 355 строк.
это я посмотрел из интерфейса.

а как запросом посмотреть размер индекса?

и почему увеличивается степень фрагментации после ребилда?

даже если бы у меня индекс состоял из 10 строк, то при его ребилде степень фрагментации
не должна увеличиваться. или я ошибаюсь?
поясните пожалуйста.
28 июн 13, 17:04    [14498524]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
dm_db_index_physical_stats
даже если бы у меня индекс состоял из 10 строк, то при его ребилде степень фрагментации
не должна увеличиваться. или я ошибаюсь?
поясните пожалуйста.

Объекты, которые занимают меньше 8 страниц располагаются в смешанных экстентах. Т.е. делят экстенты с другими объектами. При ребилде страницы также могут быть раскиданы по разным экстентам
28 июн 13, 17:12    [14498569]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
автор
Объекты, которые занимают меньше 8 страниц располагаются в смешанных экстентах. Т.е. делят экстенты с другими объектами. При ребилде страницы также могут быть раскиданы по разным экстентам

и в результате этого процент фрагментации при ребилде лишь увеличивается для таких объектов, да?
28 июн 13, 17:55    [14498712]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
dm_db_index_physical_stats
автор
Объекты, которые занимают меньше 8 страниц располагаются в смешанных экстентах. Т.е. делят экстенты с другими объектами. При ребилде страницы также могут быть раскиданы по разным экстентам

и в результате этого процент фрагментации при ребилде лишь увеличивается для таких объектов, да?
Такие объекты смысла ребилдить нет вообще никакого. Впрочем, как и следить за их фрагментацией.
28 июн 13, 17:59    [14498733]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
dm_db_index_physical_stats
и в результате этого процент фрагментации при ребилде лишь увеличивается для таких объектов, да?

8 страниц можно разнести по 8ми разным эктентам. Т.е. максмальная дефрагментация достижима. А минимальная - нет.
28 июн 13, 18:00    [14498739]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
насколько подходит для ребилда скрипт ниже?

В следующем примере автоматически реорганизуются или перестраиваются все секции в базе данных со средней степенью фрагментации более 20 процентов

-- Ensure a USE <databasename> statement has been executed first.
use ItiliumOLD;
go

SET NOCOUNT ON;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname nvarchar(130); 
DECLARE @objectname nvarchar(130); 
DECLARE @indexname nvarchar(130); 
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command nvarchar(4000); 
-- Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function 
-- and convert object and index IDs to names.
SELECT
    object_id AS objectid,
    index_id AS indexid,
    partition_number AS partitionnum,
    avg_fragmentation_in_percent AS frag
INTO #work_to_do
FROM sys.dm_db_index_physical_stats (DB_ID('ItiliumOLD'), NULL, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 20.0 AND index_id > 0;

-- Declare the cursor for the list of partitions to be processed.
DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do;

-- Open the cursor.
OPEN partitions;

-- Loop through the partitions.
WHILE (1=1)
    BEGIN;
        FETCH NEXT
           FROM partitions
           INTO @objectid, @indexid, @partitionnum, @frag;
        IF @@FETCH_STATUS < 0 BREAK;
        SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name)
        FROM sys.objects AS o
        JOIN sys.schemas as s ON s.schema_id = o.schema_id
        WHERE o.object_id = @objectid;
        SELECT @indexname = QUOTENAME(name)
        FROM sys.indexes
        WHERE  object_id = @objectid AND index_id = @indexid;
        SELECT @partitioncount = count (*)
        FROM sys.partitions
        WHERE object_id = @objectid AND index_id = @indexid;

-- 30 is an arbitrary decision point at which to switch between reorganizing and rebuilding.
        IF @frag < 30.0
            SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE';
        IF @frag >= 30.0
            SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD';
        IF @partitioncount > 1
            SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10));
        EXEC (@command);
        PRINT N'Executed: ' + @command;
    END;

-- Close and deallocate the cursor.
CLOSE partitions;
DEALLOCATE partitions;

-- Drop the temporary table.
DROP TABLE #work_to_do;
GO
28 июн 13, 18:17    [14498789]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
dm_db_index_physical_stats
насколько подходит для ребилда скрипт ниже?
Для каких-то баз подойдет, для каких-то нет.
28 июн 13, 18:19    [14498803]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
Гавриленко Сергей Алексеевич
dm_db_index_physical_stats
насколько подходит для ребилда скрипт ниже?
Для каких-то баз подойдет, для каких-то нет.

у меня БД 120 Гб,
как мне узнать оптимальный ли это будет для меня вариант?

можете предложить вариант лучше?
28 июн 13, 18:23    [14498808]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
WHERE avg_fragmentation_in_percent > 20.0 AND index_id > 0;

в этом запросе не нравится условие, что отбирают индексы только по степени фрагментации.
а если в БД +100500 маленьких индексов, у которых большая фрагментация, зачем время тогда тратить?

нужно дописать в условие, что размер индекса > 100m или количество строк в индексе >300000

как это сделать?
28 июн 13, 18:56    [14498868]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35396
Блог
-- фрагментированные индексы
SELECT TOP 100
       DatbaseName = DB_NAME(),
       TableName = OBJECT_NAME(s.[object_id]),
       IndexName = i.name,
       i.type_desc,
       [Fragmentation %] = ROUND(avg_fragmentation_in_percent,2),
       page_count,
       partition_number,
       'alter index [' + i.name + '] on [' + sh.name + '].['+ OBJECT_NAME(s.[object_id]) + '] REBUILD' + case
                                                                                                           when p.data_space_id is not null then ' PARTITION = '+convert(varchar(100),partition_number)
                                                                                                           else ''
                                                                                                         end + ' with(maxdop = 4,  SORT_IN_TEMPDB = on)' [sql]
  FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
  INNER JOIN sys.indexes as i ON s.[object_id] = i.[object_id] AND
                                 s.index_id = i.index_id
  left join sys.partition_schemes as p on i.data_space_id = p.data_space_id
  left join sys.objects o on  s.[object_id] = o.[object_id]
  left join sys.schemas as sh on sh.[schema_id] = o.[schema_id]
  WHERE s.database_id = DB_ID() AND
        i.name IS NOT NULL AND
        OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
        page_count > 100 and
        avg_fragmentation_in_percent > 10
  ORDER BY 4, page_count
28 июн 13, 19:22    [14498944]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
dm_db_index_physical_stats
Ennor Tiegael
dm_db_index_physical_stats,

Размер индекса какой? Маленькие объекты перестраивать бесполезно.

таблица, к которой относится этот индекс содержит 355 строк.
это я посмотрел из интерфейса.

а как запросом посмотреть размер индекса?

и почему увеличивается степень фрагментации после ребилда?

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


При таких маленькихразмерах таблицы уже даже возможны тупо погрешности в вычислениях с плавающей точкой (коим значением avg_fragmentation_in_percent безусловно является).
28 июн 13, 20:00    [14499009]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
dm_db_index_physical_stats
WHERE avg_fragmentation_in_percent > 20.0 AND index_id > 0;

в этом запросе не нравится условие, что отбирают индексы только по степени фрагментации.
а если в БД +100500 маленьких индексов, у которых большая фрагментация, зачем время тогда тратить?

нужно дописать в условие, что размер индекса > 100m или количество строк в индексе >300000

как это сделать?
Не изобретайте велосипед.
http://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html
28 июн 13, 20:07    [14499028]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
Mind
dm_db_index_physical_stats
WHERE avg_fragmentation_in_percent > 20.0 AND index_id > 0;

в этом запросе не нравится условие, что отбирают индексы только по степени фрагментации.
а если в БД +100500 маленьких индексов, у которых большая фрагментация, зачем время тогда тратить?

нужно дописать в условие, что размер индекса > 100m или количество строк в индексе >300000

как это сделать?
Не изобретайте велосипед.
http://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html

в ссылке нет того, что мне надо.

и я вот обнаружил такую штуку. в mssql server 2008 r2 есть отчёты (reports).
выбрал отчёт Index Physical Statistics. В этом отчёте даются рекоммендации
относительно ребилда индексов.
Так вот, ms sql мне рекоммендует ребилдить индекс на таблицу, где 293 строки!

да, и тут кажется никто не привёл запрос по нахождению самых больших индексов в БД.
очень жду.
1 июл 13, 16:50    [14506253]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
dm_db_index_physical_stats
да, и тут кажется никто не привёл запрос по нахождению самых больших индексов в БД.
очень жду.
А это что:
Критик
-- фрагментированные индексы
SELECT TOP 100
       DatbaseName = DB_NAME(),
       TableName = OBJECT_NAME(s.[object_id]),
       IndexName = i.name,
       i.type_desc,
       [Fragmentation %] = ROUND(avg_fragmentation_in_percent,2),
       page_count,
       partition_number,
       'alter index [' + i.name + '] on [' + sh.name + '].['+ OBJECT_NAME(s.[object_id]) + '] REBUILD' + case
                                                                                                           when p.data_space_id is not null then ' PARTITION = '+convert(varchar(100),partition_number)
                                                                                                           else ''
                                                                                                         end + ' with(maxdop = 4,  SORT_IN_TEMPDB = on)' [sql]
  FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
  INNER JOIN sys.indexes as i ON s.[object_id] = i.[object_id] AND
                                 s.index_id = i.index_id
  left join sys.partition_schemes as p on i.data_space_id = p.data_space_id
  left join sys.objects o on  s.[object_id] = o.[object_id]
  left join sys.schemas as sh on sh.[schema_id] = o.[schema_id]
  WHERE s.database_id = DB_ID() AND
        i.name IS NOT NULL AND
        OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
        page_count > 100 and
        avg_fragmentation_in_percent > 10
  ORDER BY 4, page_count
?
ORDER BY только, допилить...

И, если будет ругаться на неверный синтаксис в 13-й строке, как у меня, вместо "db_id()" вставить id-шник БД, как константу, или записать его в переменную и подставить ее туда же.
1 июл 13, 17:55    [14506632]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
baracs
dm_db_index_physical_stats
да, и тут кажется никто не привёл запрос по нахождению самых больших индексов в БД.
очень жду.
А это что:
Критик
-- фрагментированные индексы
SELECT TOP 100
       DatbaseName = DB_NAME(),
       TableName = OBJECT_NAME(s.[object_id]),
       IndexName = i.name,
       i.type_desc,
       [Fragmentation %] = ROUND(avg_fragmentation_in_percent,2),
       page_count,
       partition_number,
       'alter index [' + i.name + '] on [' + sh.name + '].['+ OBJECT_NAME(s.[object_id]) + '] REBUILD' + case
                                                                                                           when p.data_space_id is not null then ' PARTITION = '+convert(varchar(100),partition_number)
                                                                                                           else ''
                                                                                                         end + ' with(maxdop = 4,  SORT_IN_TEMPDB = on)' [sql]
  FROM sys.dm_db_index_physical_stats(db_id(),null, null, null, null) s
  INNER JOIN sys.indexes as i ON s.[object_id] = i.[object_id] AND
                                 s.index_id = i.index_id
  left join sys.partition_schemes as p on i.data_space_id = p.data_space_id
  left join sys.objects o on  s.[object_id] = o.[object_id]
  left join sys.schemas as sh on sh.[schema_id] = o.[schema_id]
  WHERE s.database_id = DB_ID() AND
        i.name IS NOT NULL AND
        OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0 and
        page_count > 100 and
        avg_fragmentation_in_percent > 10
  ORDER BY 4, page_count
?
ORDER BY только, допилить...

И, если будет ругаться на неверный синтаксис в 13-й строке, как у меня, вместо "db_id()" вставить id-шник БД, как константу, или записать его в переменную и подставить ее туда же.

спасибо!

а по поводу косячного отчёта что скажете?
1 июл 13, 18:30    [14506824]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
baracs
Member

Откуда: Москва
Сообщений: 7217
dm_db_index_physical_stats
а по поводу косячного отчёта что скажете?
А чего в нем косячного?
На сколько я помню, он показывает много чего, в том числе и фрагментацию, по всем индексам...
Что с этим делать (или не делать) - вам решать.
2 июл 13, 09:29    [14508221]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
у меня такой вопрос:
почему используете sys.objects, а не sys.tables?
значение page_count присутствует в sys.dm_db_index_physical_stats

но я не знаю, что значит строка, особенно IsMsShipped
 OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0


а таким запросом неэффективно узнать?
дело в том, что таким образом я больше индексов фрагментированных обнаружил.
SELECT b.name as index_name,  t.name as table_name,
a.page_count, a.index_type_desc, a.object_id, a.index_id,
a.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats 
(DB_ID('MYDB'), NULL, NULL, NULL, 'DETAILED') AS a
    JOIN sys.indexes AS b 
    ON a.object_id = b.object_id 
    join sys.tables as t
   on b.object_id=t.object_id
   and b.object_id=t.object_id
    AND a.index_id = b.index_id
    and a.avg_fragmentation_in_percent>10
    and a.page_count>100
	and a.index_id<>0 --HEAP EXCLUDE
    ; 
2 июл 13, 10:37    [14508780]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
dm_db_index_physical_stats
но я не знаю, что значит строка, особенно IsMsShipped
 OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0

Описание OBJECTPROPERTY можно найти в хелпе

dm_db_index_physical_stats
у меня такой вопрос:
почему используете sys.objects, а не sys.tables?

Кроме таблиц индексы есть еще и у представлений например
2 июл 13, 10:41    [14508806]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
Glory
dm_db_index_physical_stats
но я не знаю, что значит строка, особенно IsMsShipped
 OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0

Описание OBJECTPROPERTY можно найти в хелпе

dm_db_index_physical_stats
у меня такой вопрос:
почему используете sys.objects, а не sys.tables?

Кроме таблиц индексы есть еще и у представлений например

материализованных представлений или обычных?
2 июл 13, 10:45    [14508834]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Glory
Member

Откуда:
Сообщений: 104751
dm_db_index_physical_stats
материализованных представлений или обычных?

в MSSQL нет материализованных представлений. Есть индексированные и неиндексированные.
2 июл 13, 10:47    [14508851]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
dm_db_index_physical_stats
материализованных представлений или обычных?

С материализованными представлениями вам надо сюда. А в MSSQL — индексированные представления.
2 июл 13, 10:48    [14508860]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
dm_db_index_physical_stats
Guest
спасибо!

ещё вопрос есть:

пытаюсь найти индексы в БД, которые не используются:

SELECT distinct DB_NAME(database_id),
  OBJECT_NAME([object_id])
FROM sys.dm_db_index_usage_stats
where user_seeks=0 and user_scans=0 and user_lookups=0
and system_seeks=0 and system_scans=0 and system_lookups=0
GO


у меня во втором столбце в выводе NULL.
это как понять?
у объекта нет имени что ли?
2 июл 13, 16:55    [14511814]     Ответить | Цитировать Сообщить модератору
 Re: После ребилда индекса его фрагментация увеличивается. Почему так?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
dm_db_index_physical_stats
спасибо!

ещё вопрос есть:

пытаюсь найти индексы в БД, которые не используются:

SELECT distinct DB_NAME(database_id),
  OBJECT_NAME([object_id])
FROM sys.dm_db_index_usage_stats
where user_seeks=0 and user_scans=0 and user_lookups=0
and system_seeks=0 and system_scans=0 and system_lookups=0
GO


у меня во втором столбце в выводе NULL.
это как понять?
у объекта нет имени что ли?


В своё время нарыл на одном из зарубежных форумов:

SELECT 
        DatabaseName = DB_NAME()
        ,TableName = OBJECT_NAME(s.[object_id])
        ,IndexName = i.name
        ,user_seeks
        ,user_lookups
        ,user_scans
        ,user_updates    
        ,system_updates 
INTO #TempUnusedIndexes
FROM   sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON  s.[object_id] = i.[object_id] 
    AND s.index_id = i.index_id 
WHERE  s.database_id = DB_ID()
    AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0
    AND    user_seeks =0
    AND user_scans =0
    AND user_lookups =0
    AND s.[object_id] = -999  
;


EXEC sp_MSForEachDB    'USE [?]; 
-- Table already exists.
INSERT INTO #TempUnusedIndexes 
SELECT        DatabaseName = DB_NAME()
        ,TableName = OBJECT_NAME(s.[object_id])
        ,IndexName = i.name
                ,user_seeks
        ,user_lookups
        ,user_scans
        ,user_updates    
        ,system_updates    
FROM   sys.dm_db_index_usage_stats s 
INNER JOIN sys.indexes i ON  s.[object_id] = i.[object_id] 
    AND s.index_id = i.index_id 
WHERE  s.database_id = DB_ID()
    AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
    AND    user_seeks =0
    AND user_scans =0
    AND user_lookups =0
    AND i.name IS NOT NULL    -- Ignore HEAP indexes.
ORDER BY 1 DESC ,user_updates DESC
2 июл 13, 17:00    [14511851]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить