部分 **
物理分頁
物理分頁:在資料庫執行查詢時(實現分頁查詢),查詢需要的資料 ---- 依賴資料庫sql語句,屬於後台分頁
mysql /sqlserver / oracle 每種資料庫寫法不同的
mysql 使用limit ,sqlserver 使用top ,oracle使用rownum
在mysql資料庫中offset關鍵字的意思是"越過",而limit關鍵字的意思是「限制」,利用這兩者結合可輕鬆物理分頁。
(1)取得符合條件的結果集,包含全欄位。
(2)利用offset關鍵字越過一段結果集(被越過的結果集就是"(當前頁 - 1) * 一頁顯示數")。
(3)利用limit關鍵字限制取得一段結果集(被限制取得的結果集就是一頁顯示數)
語法:select * from 表名 limit ? , ?;
第乙個引數 ? (當前頁數 -1) * 當前頁數要顯示的資料條數
第二個引數 ? 代表的是實際頁數要顯示的資料條數(這一頁要顯示多少資料)
第一頁select * from product limit 0, 3 --> 0,1,2
第二頁select * from product limit 3, 3 --> 3,4,5
第三頁select * from product limit 6, 3 --> 6,7,8
9, 3 ---> 9,10,11
12, 3 ---? 12,13,14
邏輯分頁
邏輯分頁:先查詢所有資料到記憶體,再從記憶體擷取需要資料 ------- 採用程式內部邏輯,屬於前台分頁
查詢所有資料 list, list.sublist 擷取你需要資料
例如:查詢第11到第30條資料 list.sublist(開始索引,結束索引); // 前取到,後取不到 ----- list.sublist(10,30);
邏輯分頁的第一種方式,利用resultset的滾動分頁。步驟如下:
a.根據條件sql查詢資料庫。
b.得到resultset的結果集,由於resultset帶有游標,因此可以使用其next()方法來指向下一條記錄。
c.利用next()方法,得到分頁所需的結果集。
邏輯分頁的第二種方式
利用scrollable resultsets(可滾動結果集合)來快速定位到某個游標所指定的記錄行,所使用的是resultset的absolute()方法。
* 邏輯分頁方法二,使用absolute()方法分頁
* @param currentpage
* 當前頁
* @param showrows
* 一頁顯示的資料量
public listpagelisttwo(int currentpage, int showrows) catch (sqlexception e) finally catch (sqlexception e) {
e.printstacktrace();
return resultlist;
對比資料庫負擔
物理分頁每次都訪問資料庫,邏輯分頁只訪問一次資料庫,物理分頁對資料庫造成的負擔大。
伺服器負擔
邏輯分頁一次性將資料讀取到記憶體,占用了較大的內容空間,物理分頁每次只讀取一部分資料,占用記憶體空間較小。
實時性邏輯分頁一次性將資料讀取到記憶體,資料發生改變,資料庫的最新狀態不能實時反映到操作中,實時性差。物理分頁每次需要資料時都訪問資料庫,能夠獲取資料庫的最新狀態,實時性強。
使用場合
邏輯分頁主要用於資料量不大、資料穩定的場合,物理分頁主要用於資料量較大、更新頻繁的場合。
總結物理分頁速度上並不一定快於邏輯分頁,邏輯分頁速度上也並不一定快於物理分頁。
物理分頁總是優於邏輯分頁:沒有必要將屬於資料庫端的壓力加諸到應用端來,就算速度上存在優勢, 然而其它效能上的優點足以彌補這個缺點。
在分頁工作前,有必要了解使用資料庫本身的一些sql語句特點更好的分頁
mysql 物理結構 mysql物理結構
mysql是通過檔案系統對資料和索引進行儲存的。mysql從物理結構上可以分為日誌檔案和資料索引檔案。mysql在linux中的資料索引檔案和日誌檔案都在 var lib mysql目錄下。日誌檔案採用順序io方式儲存 資料檔案採用隨機io方式儲存。首先可以檢視mysql的檔案在linux中的那個目...
mysql物理檔案 MySQL物理檔案組成
mysql物理檔案組成 1.錯誤日誌 error log 錯誤日誌記錄了mysql server執行過程中所有較為嚴重的警告和錯誤資訊,以及mysql server每次啟動和關閉的詳細資訊,在預設情況下,系統記錄錯誤日誌的功能是關閉的,錯誤資訊被輸出到標準錯誤輸出,如果要開啟系統記錄錯誤日誌的功能,...
mysql日誌系統 SQL 邏輯日誌 物理日誌
更新語句執行的流程和查詢語句執行的流程一樣 注意 在乙個表上有更新的操作的時候,和這個表相關的查詢快取就會被清空 在經歷分析器,優化器,和執行器儲存引擎的歷程中,還多了重要的日誌模組 redo log 重做日誌 bin log 歸檔日誌 是innodb 引擎獨有的日誌模組 它的關鍵點就是更新的時候先...