diff options
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_sqlite3.c')
-rw-r--r-- | libglusterfs/src/gfdb/gfdb_sqlite3.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3.c b/libglusterfs/src/gfdb/gfdb_sqlite3.c index 71d12db72c8..1d10afdaef7 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3.c +++ b/libglusterfs/src/gfdb/gfdb_sqlite3.c @@ -707,7 +707,11 @@ gf_sqlite3_find_recently_changed_files(void *db_conn, " OR " /*Second condition: For reads*/ "((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + " - GF_COL_TB_RWMSEC ") >= ?) )", base_query_str); + GF_COL_TB_RWMSEC ") >= ?) )" + /* Order by write wind time in a descending order + * i.e most hot files w.r.t to write */ + " ORDER BY GF_FILE_TB.W_SEC DESC", + base_query_str); if (ret < 0) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, @@ -803,7 +807,11 @@ gf_sqlite3_find_unchanged_for_time (void *db_conn, " AND " /*Second condition: For reads*/ "((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + " - GF_COL_TB_RWMSEC ") <= ?) )", base_query_str); + GF_COL_TB_RWMSEC ") <= ?) )" + /* Order by write wind time in a ascending order + * i.e most cold files w.r.t to write */ + " ORDER BY GF_FILE_TB.W_SEC ASC", + base_query_str); if (ret < 0) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, @@ -910,7 +918,12 @@ gf_sqlite3_find_recently_changed_files_freq (void *db_conn, /*Second condition: For Reads */ "( ((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + " GF_COL_TB_RWMSEC ") >= ?)" - " AND "" (" GF_COL_TB_RFC " >= ? ) ) )", base_query_str); + " AND "" (" GF_COL_TB_RFC " >= ? ) ) )" + /* Order by write wind time and write freq in a descending order + * i.e most hot files w.r.t to write */ + " ORDER BY GF_FILE_TB.W_SEC DESC, " + "GF_FILE_TB.WRITE_FREQ_CNTR DESC", + base_query_str); if (ret < 0) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, @@ -1056,7 +1069,7 @@ gf_sqlite3_find_unchanged_for_time_freq (void *db_conn, GF_COL_TB_WMSEC ") >= ? ) ) )" " AND " /*Second condition: For Reads - * Files that have read wind time smaller than for_time + * Files that have reaASCd wind time smaller than for_time * OR * File that have read wind time greater than for_time, * but write_frequency less than freq_write_cnt*/ @@ -1065,7 +1078,12 @@ gf_sqlite3_find_unchanged_for_time_freq (void *db_conn, " OR " "( (" GF_COL_TB_RFC " < ? ) AND" "((" GF_COL_TB_RWSEC " * " TOSTRING(GFDB_MICROSEC) " + " - GF_COL_TB_RWMSEC ") >= ? ) ) ) )", base_query_str); + GF_COL_TB_RWMSEC ") >= ? ) ) ) )" + /* Order by write wind time and write freq in ascending order + * i.e most cold files w.r.t to write */ + " ORDER BY GF_FILE_TB.W_SEC ASC, " + "GF_FILE_TB.WRITE_FREQ_CNTR ASC", + base_query_str); if (ret < 0) { gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_QUERY_FAILED, |