java並發資料庫
分2分情況:
一.普通的單應用並發,使用關鍵字synchronized就可以實現。
二.多應用或多台並發,這時在由於2者並非同一應用,使用synchronized並不能滿足要求。此時,有下面幾種方案:
資料庫行級鎖,優點是簡單粗暴,缺點是容易死鎖,非資料庫專業人事建議不使用。
寫入請求分離成一個獨立項目,這就回到了第一種情況,優點是實現技術難度低,缺點是高並發性能相對不是很高。
使用分布式事務管理,這個是目前高並發處理的最優方案了。
最後要說的沒有差的方案,每個方案都有其適用環境,請根據自身需求選擇對應方案。
⑵ java如何處理高並發
你指的高並發量大概有多少?x0dx0a幾點需要注意:x0dx0a盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與資料庫的交互,提高性能。x0dx0a用jprofiler等工具找出性能瓶頸,減少額外的開銷。x0dx0a優化資料庫查詢語句,減少直接使用hibernate等工具的直接生成語句(僅耗時較長的查詢做優化)。x0dx0a優化資料庫結構,多做索引,提高查詢效率。x0dx0a統計的功能盡量做緩存,或按每天一統計或定時統計相關報表,避免需要時進行統計的功能。x0dx0ax0dx0a能使用靜態頁面的地方盡量使用,減少容器的解析(盡量將動態內容生成靜態html來顯示)。x0dx0a解決以上問題後,使用伺服器集群來解決單台的瓶頸問題。x0dx0a基本上以上述問題解決後,達到系統最優。x0dx0ax0dx0a至於樓上有人提到別用JAVA來做,除非是低層的連接數過大(如大量的埠佔用需求),這種情況下考慮直接C來寫,其他的可以用JAVA來做。x0dx0ax0dx0a可以網上購買視頻做教育學習。
⑶ 關於JAVA編寫的WEB程序多次並發訪問資料庫的問題
有一個思路,你可以用ajax局部刷新數據,不刷新整個頁面,同時用緩存,例如第一個30秒的數據放入緩存,頁面從緩存里取數據,第二個30秒,你從資料庫取出數據後,寫個對象對比的方法,來比對新數據和第一個30秒存入緩存的數據,如果數據沒有改變,那頁面什麼操作也不用做,因為數據沒變化,刷新也沒意義,如果第二個30秒數據發生變化,那麼就刷新緩存為第二個30秒的數據,並且局部刷新頁面數據。資料庫的查詢是避免不了的,所以沒發減輕資料庫的壓力,只能是優化數據的顯示。就象我上邊提到的,如果前後2個30秒數據沒有變化,那麼就不要刷新頁面。
⑷ java高並發
1、在java中,高並發屬於一種編程術語,意思就是有很多用戶在訪問,導致系統數據不正確、糗事數據的現象。並發就是可以使用多個線程或進程,同時處理不同的操作。2、處理高並發的方法
對於一些大型網站,比如門戶網站,在面對大量用戶訪問、高並發請求方面,基本的解決方案集中在這樣幾個環節:使用高性能的伺服器、高性能的資料庫、高效率的編程語言、還有高性能的Web容器。
(1)動靜分離。靜態資源請求與動態請求分離,項目中需要訪問的圖片、聲音、js/css等靜態資源需要有獨立的存放位置,便於將來實現靜態請求分離時直接剝離出來,比如nginx可以直接配置圖片文件直接訪問目錄,而不需要經過tomcat。這樣tomcat就可以專注處理動態請求,操作資料庫數據處理之類的。靜態請求代理伺服器性能比tomcat高很多。
(2)引入緩存。資料庫緩存、頁面緩存,這東西好用不復雜,搞明白什麼地方適用最重要。簡單的例子是頻繁讀取,不修改的地方最適用。也是後續集群做數據共享的一個方式之一,集群環境下,經常會碰到數據共享問題。
(3)如果將來數據量大,單一資料庫成為瓶頸時,資料庫的讀寫分離來了。資料庫集群,讀寫分離,分表分區。
⑸ java多線程訪問資料庫怎麼優化啊,並發很大
個人覺得高寫入並發的話先用緩存緩沖一下,可以合並的寫入合並成批量寫入可以管一些用但終歸寫入量很大的話還是要在資料庫端優化了,把並發寫均衡到多台伺服器上,應該沒有別的辦法了。如果瓶頸不再資料庫那就是應用伺服器處理能力不足,升級應用伺服器。
⑹ java多用戶同時訪問和資料庫進行交互,如何能夠高並發
我覺得1萬的數據並發量並不大,想oracle資料庫,mysql承載這些並發是沒有問題的
我覺得,主要的問題在於你GPS是一直在修改的,因為車輛在不斷的行駛,這樣的話,可能會影響資料庫的性能
我覺得,你可以用一個內存行的資料庫,比如,redis,用這個來存放GPS信息,redis是基於內存的,讀寫要比關系資料庫速度快(忽略網路因素),你可能要問GPS入庫怎麼弄,可以做一個定時任務,每隔多少時間來將redis的數據寫入到資料庫中,當然,redis也支持一些演算法,比如LRU,來設置何時將數據同步到資料庫