23 MySQL基礎之應用優化

2022-03-18 01:25:00 字數 1133 閱讀 2709

對於訪問資料庫來說,建立連線的代價比較昂貴,因此,可以通過建立「連線池」提高訪問的效能。

連線池:把連線當做物件或者裝置,統一放在乙個「池子」中,以前需要直接訪問資料庫的地方,現在都改為從這個「池子」裡面獲取連線來使用。因為「池子」中的連線都已經預先建立好,可以直接分配給應用使用,因此大大減少了建立新連線所耗費的資源。

應用中需要理清對資料庫的訪問邏輯。能夠一次連線就能夠提取出所有結果的,就不用兩次連線,這樣可以大大減少對資料庫無謂的重複訪問。

編寫sql**的邏輯問題

mysql 的查詢快取(mysql query cache)是在 4.1 版本以後新增的功能,它的作用是儲存 select 查詢的文字以及相應結果。如果隨後收到乙個相同的查詢,伺服器會從查詢快取中重新得到查詢結果,而不再需要解析和執行查詢。

查詢快取的適用物件是更新不頻繁的表,當表更改(包括表結構和表資料)後,查詢快取值的相關條目被清空。

在應用中,我們可以在應用端加 cache 層來達到減輕資料庫的負擔的目的。cache 層有很多種,也有很多種實現的方式,只要能達到降低資料庫的負擔,又能滿足應用就可以,這就需要根據應用的實際情況進行特殊處理。

比如,可以把部分資料從資料庫中抽取出來放到應用端以文字方式儲存,然後有查詢需求的話,可以直接從這個「cache」中檢索。或者可以在應用端建立乙個二級資料庫,將訪問高頻資料放在二級庫上,然後設定乙個機制與主資料庫進行同步。可以大大降低主資料庫的壓力。

負載均衡(load balance)是實際應用中使用非常普遍的一種優化方法,它的機制就是利用某種均衡演算法,將固定的負載量分布到不同的伺服器上,以此來減輕單台伺服器的負載,達到優化的目的。負載均衡可以用在系統中的各個層面中,從前台的 web 伺服器到中間層的應用伺服器,最後到資料層的資料庫伺服器,都可以使用。

主從複製:具體的實現是乙個主伺服器承擔更新操作,而多台從伺服器承擔查詢操作,主從之間通過複製實現資料的同步。多台從伺服器一方面用來確保可用性,一方面可以建立不同的索引以滿足不同查詢的需要。

集群(cluster)

分布式的資料庫架構適合大資料量、負載高的情況,它具有良好的擴充套件性和高可用性。

2 3 mysql儲存 CSV插入資料

上一節,我們大致過了一些mysql儲存引擎為csv型別的table檔案是如何儲存的。那麼這一節,我們來看看一條insert語句是如何執行的,並且落到csv檔案中的。看了很多現在網上的原始碼分析,都是發現5.x與8.0 上差距還是挺大的。mysql insert into user1 values 1...

15 23資料庫(23) MySQL事務

備註 所有查詢基於前面章節建立的校園資料庫 事務tranaction tx 開啟事務 begin 課程表插入 把妹 學科 insert into course name values 教師表插入一位把妹名師 insert into teacher name,gender,courseid value...

23 MySQL是怎麼保證資料不丟的?

只要保證redo log和binlog持久化到磁碟,就能確保mysql異常重啟後資料可以恢復。binlog的寫入邏輯比較簡單 事務執行過程中,先把日誌寫到binlog cache,事務提交的時候,再把binlog cache寫到binlog檔案中。系統給binlog cache分配了一片記憶體,每個...