成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

加快數據庫性能的八項技術

運維 數據庫運維
在本文中,您將學習垂直和水平分區,分片,復制等的區別,以及加快數據庫的其他方式。

幾乎所有用于最終用戶的Web服務都需要存儲數據。它們幾乎所有人都將它們存儲在數據庫中。很多很多使用PostgreSQL,MySQL / MariaDB或MSSQL等關系數據庫。數據庫系統非常令人敬畏,因為您可以忘記它們。他們只是為了處理你的數據持久性……直到他們變慢。

在本文中,您將學習垂直和水平分區,分片,復制等的區別,以及加快數據庫的其他方式。我們走吧!

[[410567]]

我們關心什么?

對于數據庫系統,我們關心一致的一致性和可用性。我們還需要一個用于交換破損設備和連續備份的工作解決方案。

一旦滿足最低要求,我們可能有幾個性能指標:

  • 讀取簡單查詢的性能
  • 讀取復雜查詢的性能
  • 插入/更新性能

不同應用程序的工作量以重要方式不同。許多Web應用程序僅使用CRUD,偶爾一次,非常簡單的連接。他們需要快速讀取和相對快速的寫入。他們有大量的小交易。他們有一個OLTP風格的工作量。

分析團隊相比之下需要更復雜的疑問。如果這些查詢需要更多時間,它也是可以接受的。它們具有少量復雜的選擇查詢。他們有一個OLAP風格的工作量。

找到單個慢查詢的一個工具正在記錄慢查詢(MySQL,PostgreSQL,MSSQL)。

算法改進

在許多情況下,在生產中運行的代碼只是恰好工作的第一件事。對于非開發人員來說,想想你寫的最后幾塊電子郵件。很可能,至少有一個在哪里你沒有花太多時間來改善你的溝通方式。這是一個代碼的故事。在好公司中,至少第二個人在代碼中快速瀏覽。但是,當它看起來合理時,我們的開發人員不會詳細介紹每一條線。這意味著總會有改進的空間。

對于數據庫,有兩種常見的方法可以改進:添加合理的索引和查詢優化。

1. 索引

索引允許數據庫通過維護有效的搜索數據結構(例如,B樹)更快地查找相關行。這是按表完成的。添加索引可以計算地昂貴,必須在生產系統上執行,因此通常不經常完成。

通過SQL創建索引(MySQL,PostgreSQL)很容易:

  1. CREATE INDEX arbitrary_index_name 
  2. ON your_table_name(column1, column2); 

添加索引可以加速數據庫中的搜索,但慢下來更新/插入/刪除語句,除非“在”部分“部分成本耗時。

2. 查詢優化

查詢優化由每個查詢的數據庫用戶完成。查詢可以用幾種不同的方式編寫,其中一些可以比其他方式更有效。您可能希望在數據上嘗試不同的查詢版本并使用Explate語句。

一個提及的工具是sqlcheck。它檢查常見的SQL查詢反模式,例如在一列中具有多個值而不是使用交叉表或通配符選擇。

查詢優化主題的略微不同的子類別是n + 1問題/寫入循環以發送多個查詢,而不是對數據進行一個查詢。

3. 業務變更和分區

當您正在營業時,您想取悅您的客戶。如果他們要求一個小型功能,您會嘗試包含它。這可能導致功能蠕變。UNIX哲學表明這是一個很多問題的問題:

做一件事并做得好。” - Doug McIlroy.

同樣,可以通過用戶組拆分Web服務數據。也許將它們分成區域是有意義的?我在AWS和安全的代碼戰士上看到過。也許你可以將其分成“私人客戶”,“小型企業客戶”或“大型商業客戶”?也許應用程序的一部分實際上可以與自己的數據庫有自己的服務?

4. 復制

> Image by Martin Thoma

如果讀是問題,復制是一個簡單的解決方案,如果更新的一點時間延遲并不大。復制將數據庫連續復制到另一臺計算機。它加速了讀取并充當故障轉移機制。

該想法是擁有一個主服務器和多個復制服務器,該服務器以前在其他名稱下已知。主服務器處理數據的任何更改,而Replication Server只會復制主服務器。還有其他拓撲,例如環或星形設置。

另請參閱:MySQL文檔,PostgreSQL文檔,MSSQL文檔

5. 水平分區

鑒于一個巨大的表,我們可以在另一臺機器上存儲一些行和其他機器。按行拆分數據的想法稱為水平分區。

圖像解釋了多個單詞:

> Conceptual example for horizontal partitioning. Image by Martin Thoma.

僅在MySQL / MariaDB中的ID簡單地分區:

  1. ALTER TABLE shopping_carts 
  2. PARTITION BY RANGE(id) 
  3. ( Partition p0 VALUES LESS THAN (1234),  
  4.   Partition p1 VALUES LESS THAN (4567),  
  5.   Partition p2 VALUES LESS THAN MAXVALUE); 

您希望數據庫系統的用戶仍然能夠使用典型查詢查詢數據庫,或許使用以下內容:

  1. SELECT * FROM shopping_carts WHERE cart_id = 3 

這里有一個重要的事情:水平分區完全無關與水平縮放!

6. 垂直分區

我們可以根據行劃分大數據庫,而是可以按列劃分。這可能會給你一種不安的感覺,因為你在大學學習了一個正常化數據庫是一個好主意。這里要注意的重要事項是我們正在談論數據庫設計中的不同階段。各種數據庫正常形式與邏輯設計有關。在這個階段,我們照顧了物理設計。

應用程序的不同部分可能不需要行的大多數列。出于這個原因,可以將它們分開。因此,垂直分區也稱為行分離。

一個常用的實踐是從內容中拆分元數據。這是一個圖片:

> Image by Martin Thoma

這里有一個重要的事情:垂直分區與垂直縮放完全無關!

當您避免隱私或監管問題時,垂直分區可能很有用。想想信用卡信息。這可以符合其他信息符合良好,但大多數應用程序都不需要它。您甚至可能將其放在完全不同的數據庫中,并將其隱藏在私人微服務后面。

分片 - 以下一級分配

您已經看到數據可以以兩種不同的方式分組。它可能已經有意義地分區同一臺計算機以幫助數據庫更快地執行常見查詢。但如果數據庫最大限度地熄滅CPU或RAM,則使用不同的機器可能有意義。

分片正在劃分單個邏輯數據集并將其分發在不同的機器上。

正如您可能猜到的那樣,這有很多問題 - 因此應該只應該是你最后的出路。例如,由于2010年10月(來源)的分配問題,FourSquare已下降了11小時。到目前為止,我一直很幸運,我不必處理分片。

第一個明顯的問題是您的應用程序需要知道哪些碎片包含您正在尋找的數據。因此,您的應用程序邏輯受到影響,可能在所有地方受到影響。

第二個大問題是橫跨碎片加入。

第三個問題是如何定義分片。要真正可擴展,您想要進行動態定義分片。擁有分層結構可以幫助實現這一目標。

8. 數據庫群集

在看Vitess時,我只會遇到這個術語。這個想法似乎隱藏了碎片的問題,也是在引擎蓋下使用復制:

WintgreSQL還有文檔,MySQL群集是另一種產品。

獎金:查詢緩存

如果您有一些沉重的查詢,該查詢是對很少發生更改的數據,您可以嘗試緩存查詢。我不確定默認情況下的數據庫提供了什么,但您可以簡單地將鍵值存儲置于該查詢的位置。您可以直接向數據庫發送查詢,而不是將查詢發送到在鍵值存儲中查找它的微服務。如果它不存在或無效,則會查詢真實數據庫。

缺點是您不知道您獲得的數據是否是最近的數據。

讓我們總結一下!

下一步是什么?

一些主題對于發展至關重要,但不是日常工作或計算機科學課程的一部分。在我們專業的軟件開發系列中,您可以了解更多主題。

原文鏈接:https://betterprogramming.pub/8-techniques-to-speed-up-your-database-292754ff7739

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2011-05-18 09:39:19

Oracle數據庫性能優化

2010-05-04 17:08:24

Oracle數據庫

2010-04-21 14:00:48

Oracle數據庫

2009-03-30 14:19:26

優化數據庫MySQL

2023-06-06 18:51:34

2011-04-18 09:03:36

數據庫查詢

2023-10-08 08:09:16

數據庫性能服務器

2009-07-02 09:00:25

JDBC設計JSP訪問數據庫

2011-05-13 13:54:02

數據庫文檔數據庫

2009-07-01 16:01:58

JSP數據庫

2013-08-21 09:43:45

vSphere

2011-05-19 10:29:40

數據庫查詢

2011-03-04 10:03:45

EJB數據庫應用

2010-06-17 12:59:07

Oracle

2010-06-17 13:34:47

SQL Server數

2023-11-14 08:24:59

性能Scylla系統架構

2011-04-13 13:45:04

數據庫虛擬化

2017-09-29 08:56:13

2018-09-27 15:58:06

MySQL數據庫性能優化

2023-01-05 08:42:47

數據庫優化方案
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩大片 | 国产一区二区在线播放 | av网站免费 | 97精品视频在线观看 | 久久69精品久久久久久国产越南 | 国内精品久久精品 | 国产在线视频在线观看 | av中文在线播放 | 伦理午夜电影免费观看 | 国产精品1区 | 粉嫩国产精品一区二区在线观看 | 久热伊人 | 国产一区| 激情久久久久 | 日韩精品久久久久 | 日本不卡免费新一二三区 | 在线播放国产一区二区三区 | 国产视频2021 | 在线一区二区观看 | 男女污污网站 | 天天干天天爽 | 久久久久久精 | 91精品国产综合久久小仙女图片 | 伊人久操| 成人激情视频免费在线观看 | caoporn国产| 久在线观看 | 国产视频在线观看一区二区三区 | 精品久久不卡 | 日韩成人免费视频 | 国产xxx在线观看 | 亚洲国产精品久久久 | 欧美日韩在线高清 | 亚洲视频手机在线 | 欧美日韩1区2区3区 欧美久久一区 | 青青久久 | 毛片免费在线 | 国产精品久久久久久av公交车 | 欧美日本在线观看 | 91亚洲国产精品 | 91天堂网|