P_S.file_summary_by_instance uses key_value_cache
[pstop.git] / performance_schema / file_summary_by_instance / file_summary_by_instance.go
index 5340ed7..737caa8 100644 (file)
@@ -6,8 +6,10 @@ package file_summary_by_instance
 
 import (
        "database/sql"
+       "fmt"
+       "time"
 
-       //      "github.com/sjmudd/pstop/lib"
+       "github.com/sjmudd/pstop/lib"
        ps "github.com/sjmudd/pstop/performance_schema"
 )
 
@@ -55,7 +57,7 @@ type File_summary_by_instance struct {
 }
 
 // reset the statistics to current values
-func (t *File_summary_by_instance) UpdateInitialValues() {
+func (t *File_summary_by_instance) SyncReferenceValues() {
        t.SetNow()
        t.initial = make(file_summary_by_instance_rows, len(t.current))
        copy(t.initial, t.current)
@@ -73,6 +75,7 @@ func (t *File_summary_by_instance) UpdateInitialValues() {
 
 // Collect data from the db, then merge it in.
 func (t *File_summary_by_instance) Collect(dbh *sql.DB) {
+       start := time.Now()
        // UPDATE current from db handle
        t.current = merge_by_table_name(select_fsbi_rows(dbh), t.global_variables)
 
@@ -102,6 +105,7 @@ func (t *File_summary_by_instance) Collect(dbh *sql.DB) {
 
        // setup the totals
        t.totals = t.results.totals()
+       lib.Logger.Println("File_summary_by_instance.Collect() took:", time.Duration(time.Since(start)).String())
 }
 
 // return the headings for a table
@@ -136,7 +140,8 @@ func (t File_summary_by_instance) EmptyRowContent() string {
 }
 
 func (t File_summary_by_instance) Description() string {
-       return "File I/O by filename (file_summary_by_instance)"
+       count := t.count_rows()
+       return fmt.Sprintf("File I/O by filename (file_summary_by_instance) %4d row(s)    ", count)
 }
 
 // create a new structure and include various variable values:
@@ -149,3 +154,13 @@ func NewFileSummaryByInstance(global_variables map[string]string) *File_summary_
 
        return n
 }
+
+func (t File_summary_by_instance) count_rows() int {
+       var count int
+       for row := range t.results {
+               if t.results[row].SUM_TIMER_WAIT > 0 {
+                       count++
+               }
+       }
+       return count
+}