Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 3 вперед Ctrl→ все |
Kahramon Member Откуда: Сообщений: 19 |
Добрый день всем! У меня есть таблица там больше 100 млн записи. Все нужные поля индексирован. Ребята помогите пожалуйста |
25 мар 19, 08:49 [21842416] Ответить | Цитировать Сообщить модератору |
982183 Member Откуда: VL Сообщений: 3374 |
Задача какая? |
25 мар 19, 08:50 [21842418] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 160 |
SELECT Total_Rows= SUM(st.row_count) FROM sys.dm_db_partition_stats st WHERE object_name(object_id) = 'T' AND (index_id < 2); select COUNT(*) from T; |
25 мар 19, 10:43 [21842488] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
У меня есть таблица я его использовался как лог. Каждый секунде есть 1000 записи. Если я хочу получить информация именно выбранный период, он занимает больше 30 минут , тот время мой сервисе не записывают история в лог |
25 мар 19, 11:03 [21842510] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
если просто, то ваш вариант скорее всего NOLOCK |
||
25 мар 19, 11:06 [21842517] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
TaPaK, как мне устранить эту проблему. У меня есть два сервиса который записывает лог. 1. Через проседедура. 2. Через web api. Пожалуйста помогите. Извините мой русскый язык |
25 мар 19, 11:16 [21842529] Ответить | Цитировать Сообщить модератору |
londinium Member Откуда: Киев Сообщений: 1195 |
Kahramon,SELECT COUNT(*)AS CNTT FROM TABLEA(WITH NOLOCK) |
25 мар 19, 11:27 [21842545] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Kahramon, Если нет возможности править запросы, то или чере querystore или перевести базу в RCSI |
25 мар 19, 11:28 [21842546] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
TaPaK, Так попробовал. Никаких результаты нет. Опять занимал больше 30 минут. Если у вас время есть напишите мне на телеграмм (@qahramon0786). Я вам доступ открою |
25 мар 19, 12:15 [21842632] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
Msg 601, Level 12, State 3, Line 5 Could not continue scan with NOLOCK due to data movement. |
25 мар 19, 12:30 [21842658] Ответить | Цитировать Сообщить модератору |
.Евгений Member Откуда: Сообщений: 654 |
1000 * 60 * 60 * 24 = 86 миллионов записей в сутки. 2,5 млрд записей в месяц. 31 млрд. записей в год. Я испытываю уважение к людям, умеющим управлять такими объемами данных (как вообще, так и на MS SQL в частности). Но чувствую, что-то здесь не так... |
||
25 мар 19, 12:33 [21842660] Ответить | Цитировать Сообщить модератору |
WarAnt Member Откуда: Питер Сообщений: 2423 |
Kahramon, 1. show your execution plan 2. "Could not continue scan with NOLOCK due to data movement." seem to be hdd dies |
25 мар 19, 12:37 [21842663] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
WarAnt, How can i check hdd ? i have been sql server 2005 database and i changed it to sql server 2014. when i attach database there is no errors and warning. Евгений У меня груба 5000 терминал. они отправляет свой статус каждый секунд. Я сам не знаю как это проблема решить. Пожалуйста поделился своим опытом |
25 мар 19, 12:51 [21842685] Ответить | Цитировать Сообщить модератору |
.Евгений Member Откуда: Сообщений: 654 |
Например, можно логировать не статус, а изменение статуса. |
||
25 мар 19, 13:12 [21842705] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Фактически это не обязательно проблема базы... Можете пробовать сменить на поиск из метаданных 21842488 |
25 мар 19, 13:15 [21842707] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
.Евгений, Может я не так объяснил ситуация. дайте мне ваши контакт я вам доступ открою через teamviewer |
25 мар 19, 13:23 [21842714] Ответить | Цитировать Сообщить модератору |
.Евгений Member Откуда: Сообщений: 654 |
Kahramon, вам уже предложили считать количество строк на основе метаданных. Любой другой вариант либо займет существенное время, либо замедлит вставку новых строк, либо потребует изменить архитектуру. Сам запрос мне не интересен, а вот архитектура логирования вызвала у меня некоторое недоумение. |
||
25 мар 19, 13:47 [21842748] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
[quot .Евгений]
Ну чо так уж печально? Фсе очень сильно зависит от организации записи в лог (кластерный индекс), размеров "периода" и его соотношения с кластерным индексом... |
||||
25 мар 19, 14:04 [21842777] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Kahramon, для хранения журналов веб-сервисов больших объёмов обычно используют нереляционные СУБД. |
25 мар 19, 14:15 [21842792] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
aleks222, Ребята , я не такой профессионал как вы. Может у меня есть много ошибок когда строил архитектурную базу. Пожалуйста помогите мне найти причину. У меня сейчас есть копия база данный , если вам интересно определить ошибки я вам открою доступ. |
25 мар 19, 14:38 [21842831] Ответить | Цитировать Сообщить модератору |
.Евгений Member Откуда: Сообщений: 654 |
Как волка не корми, все равно яйца больше медвежьих не вырастут. Можно еще унести данные на SSD или In-memory, но суть проблемы остается в другом: в логе лежат никому не нужные десятки и сотни миллионов записей, данные востребованы в другом разрезе. И вместо изменения принципа хранения данных разработчик будет героически преодолевать трудности, созданные им же. |
||
25 мар 19, 15:06 [21842867] Ответить | Цитировать Сообщить модератору |
Kahramon Member Откуда: Сообщений: 19 |
А можно создавать каждый месясь отдельный таблица(log_month_year) и сохранить как ndf(log_month_year.ndf) файл? |
25 мар 19, 16:01 [21842927] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
Зачем твоя база? Определение таблицы и пример запроса - будет полезнее. |
||
25 мар 19, 17:41 [21843021] Ответить | Цитировать Сообщить модератору |
Гулин Федор Member Откуда: МИНСК Сообщений: 1298 |
Kahramon, Должно помочь - естетсвенно будет верно если статистика апдейчена для личных целей - посмотреть Count таблиц - САМОЕ ТО SELECT s.name AS [schema], t.name TableName, p.rows from sys.objects t -- with (nolock) JOIN sys.schemas s ON t.schema_id=s.schema_id JOIN sys.partitions p ON p.object_id = t.object_id JOIN sys.indexes i ON i.index_id=p.index_id AND t.object_id=i.object_id WHERE t.type = 'U' and i.type_desc in ('CLUSTERED','HEAP') order by 3 desc |
25 мар 19, 17:53 [21843036] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Гулин Федор, 1. Для получения имени схемы есть удобная функция object_schema_name(). 2. В таблице может быть более одной партиции. |
25 мар 19, 17:58 [21843041] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 3 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |