導航:首頁 > 網路數據 > jdbc大數據查詢

jdbc大數據查詢

發布時間:2023-06-26 06:03:26

① mybatis大數據查詢優化:fetchSize

這兩天做到一個需求,需要一次性將一張數據表裡的所有資源數據中的位置信息錄入到redis中,表中的數據有幾百萬起步,採用的是java定時任務,循環每次查出一萬條數據存入redis,測試時發現插入效率非常慢,經過排查發現是通過mybatis查詢數據的耗時超過了總耗時的99%,我這台機器上是每查詢一萬條數據返回耗時87s左右。
解決方法:
在mapper.xml中的<select>中加入fetchSize參數,設置的大一些,如下:

我也是第一次用這個參數,這效果,感覺非常神奇!

簡單參數解析:
通過JDBC取數據時,默認是10條數據取一次,即fetch size為10(根據oracle的文檔,默認的fetchSize是10),如果增大這個數字可以減少客戶端與oracle的往返,減少響應時間,網上有建議這個數字不要超過100,要不然對中間件內存消耗大。
雖然說超過100不好,但是我設置了10000,結果看我的破電腦還是扛得住的,但是本著專研精神,我將fatch size設置為1000,看看效果會不會打折扣,結果用時如下:

總結:
在使用mybatis一次查詢大量數據時確實可以通過怎大fatchSize的值來大大提高查詢效率,使用也非常簡單,具體fatchSize設為多少要根據自己具體的業務需要和機器的配置來綜合判定。

待解決問題
以上方式在xml中可以輕松設置,但是使用mybatis-plus的簡單查詢時並不用手動寫xml查詢,我也不知道如何定製其fatchSize的值,我目前的解決方式是手動在xml中再寫一個查詢方法來調用,但是感覺這樣做非常的麻煩,如果你知道如何在調用mybatis-plus的BaseMapper查詢方法時配置fatchSize,請留言告知,十分感謝!

② java代碼使用spring的jdbctemplate查詢大數據量時速度特別慢,該如何解決呢

第一,不要用*,第二,建議分頁,因為數據太大,讀到內存里也麻煩

③ JDBC查資料庫數據量問題

String
sql
=
"select
count(*)
from
news_detail"
----count(*)是資料庫內置函數,就是表news_detail總共有幾行
Result
rs
=
this.executeSQL(sql,params);執行上面這句sql語句,返回查詢結果類ResultSet
totalCount
=
rs.getInt(1);查詢結果集里獲取第一列的數據,就是count(*)函數查詢結果,也就是這張表的數據量
純手打,應該差不多就這樣吧

④ Java JDBC資料庫查詢表和欄位

可以用下面的方式獲取,把tableName換成你的表名,有些資料庫也可以直接使用Sql查詢表列名
ResultSet resultSet = statement.executeQuery("select * from tableName");
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
for(int i=0; i<resultSetMetaData.getColumnCount(); i++) {
System.out.print( resultSetMetaData.getColumnLabel(i) + "\t" );
System.out.print( resultSetMetaData.getColumnName(i) + "\t" );
System.out.println( resultSetMetaData.getColumnTypeName(i) );
}

⑤ 簡述使用Jdbc實現數據查詢的完整步驟

創建一個以JDBC連接資料庫的程序,包含7個步驟: 1、載入JDBC驅動程序: 在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機), 這通過java.lang.Class類的靜態方法forName(String className)實現。

⑥ 怎樣利用JDBC獲得連接,查詢數據,獲取查詢的數據

Java中有個元數據,交MetaData,這個是記錄資料庫和表本身信息的信息,
ResultSet rs=st.executeQuery("select * from student2");
//獲取結果集元數據
ResultSetMetaData rsmd=rs.getMetaData();
//總列數
int size=rsmd.getColumnCount();
//列印列名
for(int i=1;i<=size;i++)
{System.out.print(rsmd.getColumnName(i)+"\t");
}
System.out.println();
//列印列在資料庫中的類型
for(int i=1;i<=size;i++)
{
System.out.print(rsmd.getColumnTypeName(i)+"\t");
}
System.out.println();
//列印列的類型大小
for(int i=1;i<=size;i++)
{
System.out.print(rsmd.getColumnDisplaySize(i)+"\t");
}
System.out.println();
//別名
for(int i=1;i<=size;i++)
{
System.out.print(rsmd.getColumnLabel(i)+"\t");
}
System.out.println();
//列印結果集中數據
while(rs.next())
{
for(int i=1;i<=size;i++)
{
System.out.print(rs.getString(i)+"\t");
}
System.out.println();
}
希望對你有用

閱讀全文

與jdbc大數據查詢相關的資料

熱點內容
餓了么app伺服器異常 瀏覽:171
網頁如何調出編程模式 瀏覽:76
如何將家中網路連接更遠 瀏覽:884
手機測試用什麼編程 瀏覽:644
刪除多餘文件word 瀏覽:503
怎麼啟動cdlinux 瀏覽:107
什麼app可以更改發色 瀏覽:658
桌面隱形文件怎麼查看 瀏覽:500
iphone4查激活時間 瀏覽:405
用什麼編程微信小程序 瀏覽:999
37羽毛升級數據 瀏覽:89
excel對不同文件夾數據怎麼變化 瀏覽:573
數據管理操作有哪些 瀏覽:348
sdb文件用什麼打開 瀏覽:306
iphone相刪 瀏覽:405
壓縮文件中的菜單 瀏覽:860
蘋果手機文件內容亂碼 瀏覽:167
win10開機黑屏圓圈轉 瀏覽:305
linux網速測試軟體 瀏覽:257
linux華為模擬器下載 瀏覽:45

友情鏈接