IDIEP-27
Author Unknown User (jooger)
Sponsor Unknown User (vozerov)
Created 26 Sep 2018
Status


Motivation

IO statistics is used by all database vendors to have ability monitoring and tuning of performance a queries and found bottle neck related to IO operations.

The proposed solution is to implement gathering IO statistics for logical (memory) read pages and physical (storage) read/write pages. The statistics can be used at least for :

  1. Analyze IO performance of a query.
  2. Have ability to understand why performance goes down in case it related to IO. For example on concrete node or cache.
  3. Evaluate effectiveness of use indexes. Find unused indexes.
  4. See most IO aggressive queries.

Competitive analysis

Industrial  RDBMS vendors (Oracle, Postgres, MySQL)  collect detailed IO statistics in dimensions such as queries, database objects (tables and indexes), files, sessions, users, event types etc. 

Proposed Changes


  1. Implement gathering local node statistics with two levels of detalization: fine-grain by type of page types (about 35 such types) and aggregated statistics: INDEX, DATA, OTHER. Need to support 3 types of IO operations: logical/physical read and physical write (only as global statistics).
  2. Implement collecting local node statistics with the following dimensions: cache, index, query.
  3. implement exchange IO statistics by nodes to have ability expose cluster statistics (e.g. IO statistics for distributed SQL). 
  4. expose IO statistics interfaces for SQL, JMX, Visor, CMD, Web Console

Reference Links

// Links to various reference documents, if applicable.

TBD

Tickets