Patch for Index stat

Поиск
Список
Период
Сортировка
От Guillaume Lelarge
Тема Patch for Index stat
Дата
Msg-id 4900BFCA.9060300@lelarge.info
обсуждение исходный текст
Ответы Re: Patch for Index stat  ("Dave Page" <dpage@pgadmin.org>)
Список pgadmin-hackers
Hi all,

Here is a patch to add index stats on the Statistics tab for individual
indexes.

Comments?


--
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com
Index: pgadmin/schema/pgIndex.cpp
===================================================================
--- pgadmin/schema/pgIndex.cpp    (révision 7490)
+++ pgadmin/schema/pgIndex.cpp    (copie de travail)
@@ -262,22 +262,19 @@

 void pgIndexBase::ShowStatistics(frmMain *form, ctlListView *statistics)
 {
-    wxString sql;
+    wxString sql =
+        wxT("SELECT idx_scan AS ") + qtIdent(_("Index Scans")) +
+             wxT(", idx_tup_read AS ") + qtIdent(_("Index Tuples Read")) +
+             wxT(", idx_tup_fetch AS ") + qtIdent(_("Index Tuples Fetched"))+
+             wxT(", idx_blks_read AS ") + qtIdent(_("Index Blocks Read")) +
+             wxT(", idx_blks_hit AS ") + qtIdent(_("Index Blocks Hit"));

     if (GetConnection()->HasFeature(FEATURE_SIZE))
-        sql = wxT("SELECT pg_size_pretty(pg_relation_size(") + GetOidStr() + wxT(")) AS ") + qtIdent(_("Index Size"));
+        sql += wxT(", pg_size_pretty(pg_relation_size(") + GetOidStr() + wxT(")) AS ") + qtIdent(_("Index Size"));

     if (showExtendedStatistics)
     {
-        if (sql.Length() == 0)
-        {
-          sql = wxT("SELECT ");
-        }
-        else
-        {
-          sql += wxT(", ");
-        }
-        sql += wxT(" version AS ") + qtIdent(_("Version")) + wxT(",\n")
+        sql += wxT(", version AS ") + qtIdent(_("Version")) + wxT(",\n")
                wxT("  tree_level AS ") + qtIdent(_("Tree Level")) + wxT(",\n")
                wxT("  pg_size_pretty(index_size) AS ") + qtIdent(_("Index Size")) + wxT(",\n")
                wxT("  root_block_no AS ") + qtIdent(_("Root Block No")) + wxT(",\n")
@@ -287,8 +284,17 @@
                wxT("  deleted_pages AS ") + qtIdent(_("Deleted Pages")) + wxT(",\n")
                wxT("  avg_leaf_density AS ") + qtIdent(_("Average Leaf Density")) + wxT(",\n")
                wxT("  leaf_fragmentation AS ") + qtIdent(_("Leaf Fragmentation")) + wxT("\n")
-               wxT("  FROM pgstatindex('") + GetQuotedFullIdentifier() + wxT("')");
+               wxT("  FROM pgstatindex('") + GetQuotedFullIdentifier() + wxT("'), pg_stat_all_indexes stat");
     }
+    else
+    {
+        sql += wxT("\n")
+               wxT("  FROM pg_stat_all_indexes stat");
+    }
+    sql +=  wxT("\n")
+        wxT("  JOIN pg_statio_all_indexes statio ON stat.indexrelid = statio.indexrelid\n")
+        wxT("  JOIN pg_class cl ON cl.oid=stat.indexrelid\n")
+        wxT(" WHERE stat.indexrelid = ") + GetOidStr();

     DisplayStatistics(statistics, sql);
 }
@@ -310,6 +316,7 @@
     return GetConnection()->HasFeature(FEATURE_PGSTATINDEX);
 }

+
 executePgstatindexFactory::executePgstatindexFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar) :
contextActionFactory(list)
 {
     mnu->Append(id, _("&Extended index statistics"), _("Get extended statistics via pgstatindex for the selected
object."),wxITEM_CHECK); 
@@ -479,7 +486,6 @@
 }


-
 pgObject *pgIndexFactory::CreateObjects(pgCollection *collection, ctlTree *browser, const wxString &restriction)
 {
     return pgIndexBaseFactory::CreateObjects(collection, browser, restriction + wxT("\n   AND conname IS NULL"));

В списке pgadmin-hackers по дате отправления:

Предыдущее
От: Simon Riggs
Дата:
Сообщение: Re: [HACKERS] Hot Standby utility and administrator functions
Следующее
От: Guillaume Lelarge
Дата:
Сообщение: Re: [HACKERS] Hot Standby utility and administrator functions