導航:首頁 > 網路數據 > 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大數據查詢相關的資料

熱點內容
手機網站幻燈片代碼 瀏覽:549
上海雲動網路 瀏覽:435
無效的ps文件什麼意思 瀏覽:522
中國移動app如何查家庭網 瀏覽:699
微信顯示未注冊 瀏覽:977
粒子匯聚圖像教程 瀏覽:619
pdf文件能替換圖片 瀏覽:727
製表位不居中word 瀏覽:265
dell驅動盤裝驅動程序 瀏覽:577
編程中如何創建密碼 瀏覽:135
林納斯托瓦茲使用什麼編程語言 瀏覽:132
安卓qq不能指紋支付密碼 瀏覽:476
sap原因代碼 瀏覽:242
數據反饋有什麼好處 瀏覽:502
iphone4612激活 瀏覽:466
蘭州電信寬頻升級 瀏覽:317
linux內核所有進程共享 瀏覽:901
怎怎樣下載內容到文件管理里 瀏覽:303
word試圖打開鎖定文件 瀏覽:971
linux文件找不到 瀏覽:310

友情鏈接