Домой Хозяйке Master Data Services для управления НСИ. «Лечим» Spotlight от постоянной индексации дисков Процесс mds на mac os

Master Data Services для управления НСИ. «Лечим» Spotlight от постоянной индексации дисков Процесс mds на mac os

Всем здравствуйте! Сегодня хочу рассказать одну неприятную историю которая произошла с моим MacBook. А дело было так, одним зимним вечером я как всегда бродил по просторам интернета и вдруг заметил что мой Мак угрожающе загудел — кулеры начали работать на всю катушку и как следствие очень сильно стал нагреваться корпус.

Bird — что это за птица

Я сразу же залез в мониторинг системы и увидел что 98 % ресурсов ЦП пожирает некий Bird (с англ. птица) теперь задача стояла в том, что бы выяснить какая программа использует этот процесс и чем вызван такой расход ресурсов моего Мак. Но для начала я предположил, что возможно проблема решается принудительным завершением Bird, это помогло буквально на 2 минуты. Следующим шагом была перезагрузка компа — тоже тщетно.

Решение проблемы было найдено на одном из буржуйских сайтов, оказывается работа «птички» связана с , чтобы в этом убедиться я зашёл в настройки > iCloud и убрал галочку с этого пункта затем еще раз перезагрузил макбук и вуаля — мониторинг системы показал 93 % свободных ресурсов.

Все здорово, если бы мне было абсолютно плевать на этот iCloud Drive, но я из числа тех кто очень быстро адаптируется ко всем новым фишкам Apple и в дальнейшем уже не может без них обходиться, а значит следующая проблема заключалась в том как теперь вновь активировать облачное хранилище но уже без всяких там «птиц». Признаться честно я так и не узнал в чем кроется причина, просто через пару часов опять поставил галочку на место и с той поры вроде бы все здорово:). Будем считать, что это плавающий отказ, а если кто-то разобрался в этом нюансе более детально то обязательно пишите в комментариях.

mds, mds_stores, mdworker — «гаденыши» Spotlight

Следующие процессы которые могут доставить неприятные хлопоты носят имя mds_stores, mdworker и mds (все они из одной шайки). На самом деле это очень даже благородные процессы которые отвечают за индексацию данных на Mac, то есть, как многие уже догадались, напрямую сотрудничают со Spotlight. Но вот иногда эта троица (либо раздельно) может неоправданно сильно нагружать комп оставляя жалкие крохи свободной оперативки и ресурсов процессора.

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

(MDS) в MS SQL Server 2012. До недавнего времени я был знаком с этим продуктом, входящим в состав MS SQL Server 2012 (Business Intelligence and Enterprise editions), только в теории и ждал удачного случая, чтобы проверить его на практике, и вот такой случай представился.

Вводные данные

Мой клиент использует BI-решение на базе Microsoft SQL Server 2012 Business Intelligence Edition. Центром этой BI-системы является хранилище данных (Data Warehouse), которое наполняется с помощью SSIS-пакетов из транзакционных систем (OLTP). Хранилище данных, в свою очередь, служит источником для многомерной модели данных (Multidimensional Data Model). На основе многомерной модели данных аналитики заказчика формируют отчетность в Excel, используя сводные таблицы (Pivot Tables). Поскольку источников данных много, и пользователи транзакционных систем управляют справочниками хаотично, заказчик обозначил потребность в решении, которое позволяло бы создать в хранилище данных иерархии для некоторых измерений, которые были бы удобны для целей аналитического анализа. Так, например, информация об организационной структуре компании, хранящаяся в измерении «Подразделения» (таблица dbo.dimDivisions), импортируемая из OLTP-систем, удобна для оперативных отчетов, формируемых в OLTP-системах, но не подходит для целей анализа в BI-системе.

Требования бизнеса

Формальные требования бизнес-заказчика можно кратко описать следующим образом:
  • Разработать инструмент, позволяющий управлять данными о подразделениях компании для целей аналитической отчетности.
  • Использовать новые данные о подразделения в существующем BI-решений.
  • Изменения не должны повлиять на работу OLTP-систем.

Предварительная оценка и выбор решения

На основании имеющихся вводных данных и бизнес-требований заказчику было предложено следующее решение:
  • Добавить в хранилище данных дополнительное измерение для хранения данных об орг. структуре для целей аналитической отчетности.
  • Обеспечить связь между записями нового измерения и измерения «Сотрудники».
  • Изменить многомерную модель данных с учетом изменения структуры хранилища данных.
  • Выполнить настройку Master Data Services. Под настройкой понимается создание возможности ввода и редактирования данных о сотрудниках и подразделениях вручную, а так же настройка, необходимая для импорта/экспорта данных в/из MSD.
  • Обеспечить автоматический импорт данных о новых сотрудниках из хранилища данных в Master Data Services.
  • Обеспечить автоматический экспорт данных о подразделениях и принадлежности сотрудников к подразделениям сотрудниках из Master Data Services в хранилище данных.

Реализация решения

Доработка хранилища данных
Итак, поехали по-порядку. Сначала создадим в хранилище данных новое измерение «Произвольные подразделения» (dbo.dimDerivedDivisions) и свяжем его с измерением «Сотрудники» (dbo.dimEmploees). SQL-скрипт для этой задачи выглядит следующим образом:

Создадим новое измерение "Произвольные подразделения" CREATE TABLE dbo.dimDerivedDivisions (id int NOT NULL primary key identity(1, 1), parentId int NULL, sourceCode int NOT NULL, sourceParentCode int NULL, name nvarchar(100) NOT NULL DEFAULT ("N/A"), lineageDate datetime DEFAULT GETDATE(), lineageSource nvarchar(255) NOT NULL DEFAULT ("")); --Определим внешний ключ для parentId, ссылающийся на dbo.dimDerivedDivisions(id) для обеспечения иерархии родитель-потомок ALTER TABLE dbo.dimDerivedDivisions ADD CONSTRAINT fk_dbo_dimDerivedDivisions_dbo_dimDerivedDivisions FOREIGN KEY (parentId) REFERENCES dbo.dimDerivedDivisions(id); --В новое измерение добавим значение по умолчанию, на которое будут ссылаться не распределенные сотрудники SET IDENTITY_INSERT dbo.dimDerivedDivisions ON; INSERT INTO dbo.dimDerivedDivisions (id, parentId, sourceCode, sourceParentCode, name, lineageDate, lineageSource) SELECT 0, NULL, 0, NULL, "N/A", GETDATE(), "Запись введена вручную" WHERE NOT EXISTS (SELECT id FROM dbo.dimDerivedDivisions WHERE id = 0); SET IDENTITY_INSERT dbo.dimDerivedDivisions OFF; --Добавим новую колонку в измерение "Сотрудники" ALTER TABLE dbo.dimEmployees ADD derivedDivisionId int NOT NULL DEFAULT(0); --Определим внешний ключ, ссылающийся на dbo.dimDerivedDivisions(id) ALTER TABLE dbo.dimEmployees ADD CONSTRAINT fk_dbo_dimEmployees_dbo_dimDerivedDivisions FOREIGN KEY (derivedDivisionId) REFERENCES dbo.dimDerivedDivisions(id);

Доработка многомерной модели данных
Теперь добавим новое измерение в многомерную модель данных. Для этого откроем проект многомерной модели данных в SQL Server Data Tools и добавим новую таблицу dbo.dimDerivedDivisions в Data Source View. Результат выглядит следующим образом:

Чтобы не уходить далеко от темы, кратко опишу процесс доработки многомерной модели. В многомерной модели данных создаем новое измерение «Произвольные подразделения», настраиваем связь нового измерения с существующими таблицами фактов через измерение «Сотрудники», деплоим и процессим куб:

Настройка Master Data Services
Теперь все структуры данных для подготовки аналитической отчетности в разрезе нового измерения «Произвольные измерения» готовы, приступаем к самому главному - к настройке Master Data Services. Для этого в браузере переходим по ссылке, которую дал нам SQL Server Administrator, и попадаем в web-интерфейс MDS, который выглядит следующим образом:

Я не буду описывать здесь установку Master Data Services, так как это рутинная задача подробно описана на msdn.microsoft.com . Сосредоточимся лучше на реальной практике использования MDS.

Итак, первое, что нам необходимо сделать - это создать модель. Моделью в MDS называется логический контейнер, который содержит в себе сущности определенной бизнес-области. В нашем случае уместно создать модель «Сотрудники», содержащую сущности «Сотрудники» и «Подразделения». Для создания модели перейдем в web-интерфейсе Master Data Services в Administrative Tasks по ссылке System Administration. В открывшемся окне введем название модели Employees и нажмем кнопку Save model:

При установленном флажке Create entity with same name as model автоматически вместе с моделью будет создана одноименная сущность Employees. Далее создадим еще одну сущность «Подразделения» (Divisions), для этого выберем модель Employees и перейдем в меню Manage - Entities:

Нажмем на кнопку Add entity:

В открывшемся диалоге заполним параметры новой сущности и нажмем кнопку Save entity. Обратите внимание, что при создании сущности «Подразделения» был установлен флажок Enable explicit hierarchies and collections (это означает, что для сущности появится возможность создания иерархии), и ниже укажем название иерархии Divisions. Явная иерархия (Explicit Hierarchy) - это иерархия, члены которой могут быть организованы любым образом, т.е. на каждом уровне иерархии может быть любое любое количество членов и следующих уровней вложенности:

После того, как сущности созданы, необходимо настроить атрибуты сущностей. Для сущности «Сотрудники» (Employees) добавим атрибут «Подразделение» (Division). Выберем сущность Employees и нажмем кнопку Edit selected entity:

В открывшейся форме редактирования сущности нажмем на кнопку Add leaf attribute для того, чтобы добавить атрибут «Подразделение» конечного элемента сущности «Сотрудники»:

В открывшейся форме добавления атрибута, заполним наименование атрибута и установим переключатель типа атрибута в положение Domain-based. Это означает, что значения данного атрибута будут принадлежать определенной сущности, и ниже укажем какой именно, в нашем случае это сущность «Подразделения» (Divisions). В конце нажимаем кнопку Save attribute:

Ручной ввод данных в Master Data Services
Итак, модель «Сотрудники» (Employees) и сущности «Сотрудники» (Employees) и «Подразделения» (Divisions) готовы, теперь необходимо наполнить их данными. Сущность «Подразделения» (Divisions) пользователи будут заполнять вручную. Для демонстрации этого процесса перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Information Worker Tasks выберем модель Employees и перейдем по ссылке Explorer:

Выберем иерархию «Подразделения» (Divisions):

Выберем тип элементов, которыми мы хотим управлять. Сначала создадим несколько групповых элементов (Consolidated Member):

Нажмем кнопку Add, введем наименование подразделения-группы «Отдел продаж» и нажмем кнопку OK:

Аналогично добавим другие подразделения и, таким образом, создадим структуру подразделений, изображенную на следующем рисунке:

Обратите внимание, жирным шрифтом выделены подразделения-группы, а нежирным - конечные элементы. На одном уровне иерархии могут быть как те, так и другие типы элементов.

Импорт данных в Master Data Services
Теперь необходимо импортировать данные о сотрудниках в Master Data Servises из существующего хранилища данных (для дальнейшего сопоставления сотрудников и подразделений, и экспорта этих данных обратно в хранилище). Для загрузки данных в MDS в SQL базе данных, обеспечивающей работу Master Data Servises, существуют специальные промежуточные таблицы (Staging Tables), в которые мы можем вставить данные SQL-запросом или создать специальный SSIS-пакет, который будет импортировать новые записи о сотрудниках из хранилища данных во временные таблицы для их дальнейшей обработки в Master Data Servises. Откроем SSMS и найдем временные таблицы в базе данных Master Data Servises. Вот они:

В качестве примера импортируем произвольные 10 записей о сотрудниках из хранилища данных в промежуточную таблицу базы данных Master Data Services. Для этого выполним следующий SQL-запрос:

INSERT INTO . (, , , , ) SELECT TOP 10 1, 0, N"Employees_Leaf_Batch00001", E.id, E.name FROM .. E;

Вернемся в web-интерфейс Master Data Services и на главной странице перейдем по ссылке Intergation Management:

В открывшемся окне видим пакет Employees_Leaf_Batch00001, который был только что создан SQL-запросом. Запустим его, нажав на кнопку Start Batches:

После отработки пакета увидим вот такую информацию о статусе, времени начала и окончания выполнения, ошибках:

Управление данными в Master Data Services
Теперь давайте перейдем в режим управления данными и посмотрим, как загрузились записи о сотрудниках из промежуточной таблицы. Для этого перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Information Worker Tasks выберем модель Employees и перейдем по ссылке Explorer. В открывшемся окне видим, что новые данные о сотрудниках были добавлены в Master Data Services и находятся в состоянии Waiting to be validated:

Обратите внимание, что данные о подразделении (Division) у сотрудников не заполнены. Нам необходимо для каждого сотрудника выбрать подразделение, в котором он работает и нажать на кнопку ОК:

Экспорт данных из Master Data Services
После того как данные о подразделениях и принадлежности сотрудников к подразделениям введены, необходимо импортировать их обратно в хранилище данных. Для этого необходимо создать специальные представления (Subscription Views) в MDS. Перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Administrative Tasks перейдем по ссылке Intergation Management:

В открывшемся окне перейдем в меню Create Views и нажмем кнопку Add subscription view:

Заполним параметры представления для сущности «Подразделения» (Divisions) и нажмем кнопку Save:

Аналогичным образом создадим представление для сущности «Сотрудники» (Employees):

Теперь давайте разберемся, что же это за представления и как можно их использовать. На самом деле все довольно просто, представления в MDS есть ни что иное, как привычные нам представления (Views) в SQL базе данных. Откроем SSMS, и убедимся в этом:

И последнее, что остается сделать для решения поставленной задачи - это разработать SQL-скрипт или пакет SSIS, который экспортирует информацию из представлений MDS в хранилище данных.

Выводы

На реализацию данного решения было потрачено около восьми человеко-часов, что, как мне кажется, вполне адекватное время для такой задачи. В описанном решении я не использовал все возможности Master Data Services, например, остались без внимания

Некоторое время назад к нам начали обращаться с вопросами о том, как заставить вентиляторы MacBook работать чуть тише. Иногда пользователи жаловались на то, что система явно начинала жадно использовать процессорные мощности, а вслед за этим начинали сильнее крутиться кулеры, дабы охладить сам процессор. Почему так происходило – загадка. Да и далеко не у всех возникала такая проблема. Однако, потерзав немного поисковики, можно было понять суть проблемы, а главное – решить ее. Если у вас, казалось бы, без причины крутятся вентиляторы в вашем MacBook, возможно, эта статья вам поможет.

Итак, первое, что нужно было понять – почему начинает греться процессор, а потом начинают крутиться вентиляторы. Самый простой способ это узнать – заглянуть в Мониторинг системы. Именно там, отсортировав процессы, можно было вычленить два из них: MDS и mds_stores, что потребляли CPU больше обычного. Оба эти процесса отвечают за работу Spotlight. Что ж, значит нужно отключить Spotlight полностью, дабы узнать, действительно ли из-за него могут возникать наши проблемы. Для этого нужно ввести в Терминале следующую команду:

sudo mdutil -a -i on

И правда, после этой несложной манипуляции вентиляторы сбавляли обороты и начинали вращения со своей обычной скоростью.

Но тут мы встречаемся с другой проблемой: запуск приложений. Основные мои программы, которые я использую наиболее часто, помещены в Док – так их запускать гораздо быстрее и удобнее. Но те, которые используются чуть реже, я запускаю непосредственно из Spotlight. Думаю, так делают многие: простая комбинация клавиш Control + Space и открывается строчка поиска Spotlight, в которой достаточно ввести пару букв названия нужного приложения и нажать Enter для подтверждения его запуска. Такое нехитрое действие экономит время и избавляет от поиска необходимого приложения в Launchpad. Однако при выключенном Spotlight все удобство сводится к нулю.

Что ж, тогда в запасе есть и другой вариант, который поможет отключить базу данных Spotlight и заставить заново переиндексировать все данные. Сделать это также просто, достаточно в Терминале ввести следующую команду:

sudo rm -rf /.Spotlight-V100/*

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

Тем не менее, этот способ также может не принести должного результата. Поэтому перейдем к следующему. Он чуть сложнее, чем операция по вставке в Терминал одной команды, но эффект может оказаться крайне положительным. Чтобы Spotlight «не сходил с ума», можно добавить в него исключения для тех папок, которые он не будет индексировать. Для этого откройте Системные Настройки и перейдите в меню настроек Spotlight. В открывшемся окне выберите вкладку Конфиденциальность и добавьте туда те папки, которые Spotlight не будет индексировать. Особенно полезно будет добавить папки с часто меняющимся содержимым (например, папка Загрузки) и папки с онлайн-бэкапами (к примеру, папка Dropbox).

Как правило, исключив подобные папки, проблема перестает проявляться: процессы не потребляют большее количество CPU, а вентиляторы, соответственно, не запускаются, чтобы охладить его.

А ВЫ сталкивались с подобными проблемами? Возможно, это решение помогло вам? Делитесь своим опытом в комментариях!

– это встроенная поисковая система, которая позволяет найти почти всё, что Вы используете под своей учётной записью. Для этого индексирует все носители, подключённые к Вашему Маку. В некоторых случаях в меню постоянно отображается строка прогресса, указывающая на то, что система индексирует жёсткий диск. В этом случае в окне Activity Monitor можно найти процессы «mds» и «md-worker», которые используют большое количество ресурсов CPU.

может повторно индексировать жёсткий диск после крупных обновлений системы, восстановления из резервной копии или после критических ошибок, таких как kernel panic или зависаний, устранённых принудительной перезагрузкой. Это стандартные случаи, при которых индексация должна запускаться и, поскольку это довольно длительный процесс, может занять несколько часов. Однако, если Вы обнаружите повышенную активность процессов «mds» и «md-worker» и постоянно проводящуюся индексацию, то стоит уделить этой проблеме внимание.

Для начала попробуйте очистить индексы вручную. Есть два способа это сделать.

Список конфиденциальности Spotlight.

Выберите Spotlight в Системных настройках и откройте вкладку Конфиденциальность. Дальше перетащите все свои носители в список и сразу удалите их из него. Это вынудит систему удалить индексацию носителей и затем создать её, после удаления этих носителей из списка.

Терминал

Для существует несколько команд в Терминале , которые можно использовать для удаления и повторного проведения индексации вашей системы. Чтобы это сделать, откройте Терминал и последовательно введите три команды:

mdutil -Ea
mdutil -ai off
mdutil -ai on

Первая команда удалит индексацию всех томов в системе, вторая – отключит функцию индексации, а третья – включит её обратно. Подождите пока процесс завершится и проверьте, осталась ли проблема.

Следует учесть, что индексация диска – процесс длительный и может занять несколько часов, и определить решена ли проблема до завершения процесса нельзя.

Если описанные выше способы не дали положительного результата, то стоит проверить жёсткий диск. Ошибки файловой системы могут вызвать проблемы с доступом к данным и их обработкой, что, в свою очередь, может заставить Spotlight постоянно проводить индексацию. Проверьте, есть ли у Вас полная резервная копия Вашей системы (если нет, то обязательно создайте её), а затем используйте Дисковую утилиту для проверки и исправления дисков.

  1. Запустите Дисковую утилиту .
  2. С зажатой клавишей ⌘Command выберите все подключенные к вашему компьютеру диски.
  3. Во вкладке Первая помощь нажмите Проверить диск

Если в процессе проверки будут выявлены ошибки, нажмите Исправить диск. Если же ошибка возникла на загрузочном разделе, то исправить её стоит, загрузившись из раздела восстановления. Чтобы загрузиться из раздела восстановления, выключите компьютер, а затем включите его, зажав сочетание клавиш ⌘Command + R.

Традиционное спасибо Кристоферу Кесслеру за оригинальную .

Похожих постов не обнаружено

Убил некоторое время на изучение поведения утилиты индексации Spotlight в Mac OS X Lion.

Но сначала немного о проблеме. Spotlight индексирует все подряд (кроме явно запрещенного), что создает нагрузку на процессор и диск. Стал уже классическим вопрос о том, что ценнее – заряд батареи ноутбука и ресурс перезаписи SSD или несомненное удобство Spotlight.

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

Для OS X Snow Leopard в Сети предлагается много разных решений по оптимизации работы процессов MDS /mdworker, но не все они подходят для Lion.

Spotlight в Lion выполнен с явными отличиями, как мне удалось заметить. Соответственно, и рекомендации по приструнению Spotlight должны иметь отличия.

Мне удалось успокоить процессы mdworker двумя следующими пассами (остальные, как мне показалось, заметного влияния не оказали):

1. Перестройка Spotlight индекса. Это поможет тем, кто “Льва” накатывал поверх “Лепёрда”. Способов вызвать полную переиндексацию я знаю два, но рекомендую ту, что предлагает сам Apple: открываете “системные настройки” -> Spotlight, затем закладку “конфиденциальность” и в список “секретных материалов” вносите ваш встроенный жесткий диск (или все, если их несколько). Через несколько секунд можно нажать “минус”, чтобы откатить произведенное действие. Результатом будет полная перестройка индекса вашего диска. Процесс это не быстрый. Сигналом о том, что процесс начался – точка, появившаяся в центре пиктограммы Spotlight (верхний правый угол экрана). Если нажать мышью на пиктограмму в этот момент, вам Spotlight еще и прогресс покажет, и оставшееся время индексации.

На SSD у меня ~70Gb данных переиндексировались за ~15 минут. На HDD это может занять пару часов, будьте терпеливы. Лучше при этом ноут не трогать, чтобы все закончилось скорее.

Поговаривают, этот способ конвертации данных в новый формат “Льва” заметно быстрее, нежели ждать постепенной перестройки старого индекса Spotlight в новый.

2. К сожалению, п.1 может не оказать желаемого результата и mdworker продолжить насилие над компьютером. В этом случае посмотрите внимательно на другие накопительные ресурсы, подключенные к вашему компьютеру. Это могут быть внешние дисковые накопители, Time Capsule, сетевые диски и другие компьютеры. Скорее всего, в них и дело.

У меня дома есть центральный сервер, к которому все домашние компьютеры подключаются по проводам или wifi. Так вот. Мне удалось застать mdworker за работой по индексации данных на подключенных сетевых ресурсах этого сервера. А данных там о-го-го.

Тогда я произвел следующие действия: подключил к макбуку все сетевые ресурсы и физические внешние диски, открыл настройки Spotlight и добавил в “конфиденциальность” весь этот технопарк. Через несколько минут работа mdworker-ов сдулась. А этих процессов у меня одновременно пахало по несколько штук.

При отключении сетевого ресурса, его наименование исчезает из вкладки “конфиденциальность”. Но пусть вас это не пугает, при новом подключении ресурс вновь появится на прежнем месте. Да и могло ли быть иначе, когда речь идет о конфиденциальности?

Так я победил любознательность Spotlight.

Проблема решена, но исключительно на уровне моего опыта. Не факт, что он подойдет и вам, но чем лев не шутит, попробуйте…

Новое на сайте

>

Самое популярное