MicroStrategy ONE
Prioritize Jobs
Job priority defines the order in which jobs are processed. Jobs are usually executed as first-come, first-served. However, your system probably has certain jobs that need to be processed before other jobs.
Job priority does not affect the amount of resources a job gets once it is submitted to the data warehouse. Rather, it determines whether certain jobs are submitted to the data warehouse before other jobs in the queue.
For example, an executive in your company runs reports at unplanned times and you want to ensure that these reports are immediately processed. If no priority is set for the executive's reports, they are processed with the other jobs in the system. Depending on data warehouse activity, this may require some wait time. If you assign a high priority to all jobs from the executive's user group, Intelligence Server processes and submits those jobs to the data warehouse first, rather than waiting for other jobs to finish.
Intelligence Server processes a job on a database connection that corresponds to the job's priority. If no priority is specified for a job, Intelligence Server processes the job on a low-priority connection. For example, jobs with high priority are processed by high-priority connections, and jobs with low or no priority are processed by a low-priority connection. For information about setting database connection thread priority, see Manage Database Connection Threads.
Intelligence Server also engages in connection borrowing when processing jobs. Connection borrowing occurs when Intelligence Server executes a job on a lower priority connection because no connections that correspond to the job's priority are available at execution time. High-priority jobs can run on high-, medium-, and low-priority connections. Likewise, medium-priority jobs can run on medium- and low-priority connections.
When a job is submitted and no connections are available to process it, either with the same priority or with a lower priority, Intelligence Server places the job in queue and then processes it when a connection becomes available.
You can set jobs to be high, medium, or low priority, by one or more of the following variables:
- Request type: Report requests and element requests can have different priority (Prioritizing Jobs by Request Type).
- Application type: Jobs submitted from different MicroStrategy applications, such as Developer, Scheduler, MicroStrategy Web, Library, MicroStrategy Workstation, or Narrowcast Server, are processed according to the priority that you specify (Prioritizing Jobs by MicroStrategy Application Type).
- User group: Jobs submitted by users in the groups you select are processed according to the priority that you specify (Prioritizing Jobs by User Group).
- Cost: Jobs with a higher resource cost are processed according to the priority that you specify (Prioritizing Jobs by Report Cost). Job cost is an arbitrary value you can assign to a report that represents the resources used to process that job.
- Project: Jobs submitted from different projects are processed according to the priority that you specify (Prioritizing Jobs by Project).
These variables allow you to create sophisticated rules for which job requests are processed first. For example, you could specify that any element requests are high priority, any requests from your test project are low priority, and any requests from users in the Developers group are medium priority.
A job is processed at the highest priority assigned to it by any rules. For example, if you set all jobs from your test project at low priority, and all jobs from users in the Developers group at medium priority, jobs in the test project that are requested by users in the Developers group are processed at medium priority.
To Set Job Prioritization Rules
- On the Intelligence Server machine, in Developer, log in to a project source. You must log in as a user with administrative privileges.
- Expand the Administration folder, then expand Configuration Managers, and then select Database Instances.
- Right-click the database instance used to connect to the data warehouse and select Prioritization.
- To add new job prioritization rules, click New.
Prioritizing Jobs by Request Type
You can select whether element requests or report requests are processed first. For example, you may want element requests to be submitted to the data warehouse before report requests, because element requests are generally used in prompts and you do not want users to have to wait long while prompt values load. In this case you might specify all element requests to be processed at a high priority by default, and all report requests to be processed at a low priority by default.
Prioritizing Jobs by MicroStrategy Application Type
You can assign a different priority to jobs submitted from Developer, MicroStrategy Web, Scheduler, and Narrowcast Server. All jobs submitted from the specified application use the specified priority. For example, you may want report designers to be able to quickly test their reports, so you may specify that all jobs that are submitted from Developer are processed at a high priority.
Prioritizing Jobs by User Group
You can assign a different priority to jobs submitted from different MicroStrategy user groups. For example, you can assign all jobs from users in the Executive user group to be processed at a high priority.
Prioritizing Jobs by Report Cost
Report cost is an arbitrary value that you can assign to a report to help determine its priority in relation to other requests. If you choose to use report cost as a priority variable, you must define a set of priority groups based on report cost. The default priority groups are:
- Light: reports with costs between 0 and 334
- Medium: reports with costs between 335 and 666
- Heavy: reports with costs between 667 and 999
The set of cost groupings must cover all values from 0 to 999. You can then assign a priority level to each priority group. For example, you can set heavy reports to low priority, because they are likely to take a long time to process, and set light reports to high priority, because they do not place much strain on the system resources.
Once you determine the cost groupings, you can set the report cost value on individual reports. For example, you notice that a report requires significantly more processing time than most other reports. You can assign it a report cost of 900 (heavy). In this sample configuration, the report has a low priority. For factors that may help you determine the cost of a report, see Results Processing.
You set the cost of a report in the report's Properties dialog box, in the Priority category. You must have system administrator privileges to set the cost of a report.
To Set the Cost for a Report
- In Developer, right-click the report and select Properties.
- Select the Priority category.
- In the Report Cost field, type the cost of the report. Higher numbers indicate a report that uses a great deal of system resources. Lower numbers indicate a less resource-intensive report.
- Click OK.
Prioritizing Jobs by Project
You can assign a different priority to reports from different projects. For example, you may want all jobs submitted from your production project to have a medium priority, so that they take precedence over reports from your test project.