MYSQL一個語句很慢,怎麼調優法?
由於問題是調優,也就是基本不能改變總體的現有實現。下面分析慢的緣由並給出對應可能正確的解決方案
一、SQL語句自己的優化,好比去掉沒必要要的排序等。
二、若是是查詢過於複雜,也即包含了邏輯(體如今還須要在Java等代碼中組織數據),這時能夠嘗試編寫存儲過程將這一過程原子化,能夠減小訪問數據庫的次數。
三、若是SQL已經沒法繼續改進,業務也已固定,那麼從SQL自己是無法優化了,能夠試着使用緩存,前提是數據主要用於讀,而不是頻繁的修改。java
線程池的機制是怎麼樣的? 好比 線程池大小爲10, 如今有100個線程等待運行。
介於這個問題,若是是Java,我就默認樓主說的是FixedThreadPool線程池(定長)了。
有新的線程就交給線程池,它會負責管理,此處假設設定的最大併發爲10個線程,若是已經有10個線程在執行了,那麼後續的90個線程會進入隊列,直到以前已經開始執行的10個線程中有一個或者多個執行完畢,這90箇中的一個或多個就會被線程池執行。數據庫
一個網頁打開很慢,頁面很慢怎麼調優?從哪些方面,具體怎麼調優?
首先 肯定慢的緣由在哪裏:瀏覽器渲染仍是從服務器獲取數據很慢。
通常是從服務器獲取數據慢:
域名解析慢,這個通常不會出現問題,不過不排除
服務器緣由:
網絡帶寬過小
應用服務器性能問題:
一、是否是數據庫查詢太慢,看下數據庫的慢日誌,如有相關記錄,優化數據庫查詢
二、獲取數據後通過了一個漫長的處理過程:可能對數據進行了耗時的處理
三、服務器自己沒什麼問題:高併發致使服務器響應不過來:集羣,使用Nginx負載均衡,使用Redis統一管理Session。依然不行?拆分業務,分佈式處理。瀏覽器
MYSQL常見存儲引擎是InnoDB和MyISAM
InnoDB做爲默認引擎,在高可用性和高性能的折中選擇。
主要優點:
支持事物,具備提交,回滾和崩潰恢復能力的事務安全。
支持行級鎖和Oracle風格的讀取增長多用戶的併發性和性能。
基於主鍵優化數據的查詢。
支持外鍵。
能夠自由的組合其餘類型存儲引擎的表,好比查詢時join其餘存儲引擎的表。
處理大量數據時的InnoDB已被設計爲CPU的效率和最大的性能。
MyISAM
MyISAM致力於快速查詢,經常是爲了WEB應用而構建。InnoDB和MyIsam,固然還有其餘的,InnoDB支持事務,MyISAM不支持,Innodb支持行級鎖,myisam不支持,主要用於讀寫分離,讀庫可使用myisam存儲引擎,效率更高緩存
java死鎖安全
1)緣由服務器
資源有限,刀叉問題。網絡
2)排查併發
1. 使用jstack打印進程 堆棧信息,搜索關鍵字。找到阻塞線程。可使用tda.bat 查看更詳細的堆棧信息。負載均衡
2. 使用JDK給咱們的的工具JConsole,能夠經過打開cmd而後輸入jconsole打開。然後點擊檢測死鎖。分佈式
3)解決方案
順序獲取