def get_index_hit_rates()

in postgresql_metrics/postgres_queries.py [0:0]


def get_index_hit_rates(conn):
    sql = ("SELECT current_database() as db_name, relname as table_name, "
           "idx_scan as index_hit, seq_scan as index_miss "
           "FROM pg_stat_user_tables")
    results = query(conn, sql)
    index_hit_rates = []
    LOG.debug(results)
    for db_name, table_name, index_hit, index_miss in results:
        if index_hit is not None and index_miss is not None:
            if index_hit == 0:
                recent_ratio = 0
            else:
                recent_ratio = index_hit / float(index_miss + index_hit)
            index_hit_rates.append((db_name, table_name, recent_ratio))
        else:
            index_hit_rates.append((db_name, table_name, None))
    return index_hit_rates