原创 接口設計之冪等性設計

冪等性設計 今天我們來聊聊接口的冪等性設計,所謂冪等,就是任意多次執行所產生的影響均與一次執行的影響相同。 冪等性接口是指可以使用相同參數重複執行,並能獲得相同結果的接口。這裏就不展開數學中的定義了,有興趣的可以自行google。

原创 併發與多線程——線程安全

基本概念 併發:在某個時間段內,多任務交替處理的能力。 並行:同時處理多任務的能力。 併發與並行的目標:盡肯能快的執行完所有任務。 併發特點: 併發程序之間有相互制約的關係。 (1)直接制約:一個程序需要另一個程序的結果。 (

原创 兩種Redis持久化方式對比

文章目錄兩種持久化方式RDB優點缺點AOF優點缺點如何選擇使用哪種持久化方式?RDB的工作過程AOF文件的重寫如果AOF文件損壞了怎麼辦?AOF重寫過程備份數據參考 兩種持久化方式 Redis 提供了不同級別的持久化方式: RD

原创 淺析Redis複製過程

文章目錄摘要複製當 Master 關閉持久化時,複製的安全性複製的工作原理配置只讀 Slave寫入MasterSlave如何處理key的過期參考 摘要 Redis默認使用異步複製,其特點是低延遲和高性能。異步複製就意味着在故障轉移

原创 MySQL之安裝

安裝前,我們可以檢測系統是否自帶安裝 MySQL rpm -qa | grep mysql 如果你係統有安裝,那可以選擇進行卸載: yum remove mysql-libs-5.1.71-1.el6.x86_64 官網下載m

原创 Redis Sentinel看完這篇就夠了

摘要 現階段的Redis集羣主要有兩種,一種是高可用集羣,Redis Sentinel,一主多從架構,每個實例都持有完整的數據。另一種是分佈式集羣,Redis Cluster,多主架構,數據分佈在各個實例之間,每個實例都負責數據

原创 分佈式系列之分佈式鎖

分佈式鎖 在單機多線程環境下,訪問共享資源需要保證操作的原子性,而鎖機制能提供原子性。在分佈式系統下同樣需要鎖,這就是分佈式鎖。與前者不同的是,我們需要一個分佈式的鎖服務。對於分佈式所服務的實現,一般可以用關係型數據庫、Redis

原创 MySQL最佳性能實踐

文章目錄摘要1 InnoDB啓動配置1.1 系統表空間數據文件配置1.2 重做日誌文件配置1.3 頁面大小配置1.4 內存配置2 MyISAM啓動配置2.1 bulk_insert_buffer_size2.2 delay_key

原创 性能設計之緩存

緩存 在系統中最消耗性能的地方就是對數據庫的訪問了,一般來說,增、刪、改操作不會出現什麼性能問題,除非索引太多,並且數據量有十分龐大的情況下,這三個操作纔會導致性能問題。一般可以限制單表索引的數量來提升性能,比如單表的索引數量不能

原创 重學Redis數據結構

基礎數據結構 Redis 有 5 種基礎數據結構,分別爲:string、list 、set 、hash 和 zset 。熟練掌握這5種基本數據結構的使用是 Redis 最基礎也最重要的部分。當然,如果你還掌握了 Bit array

原创 更新SQL語句到底時如何執行的

文章目錄摘要Redo Log 和 BinlogRedo Log(重做日誌)Binlog(歸檔日誌)兩份日誌更新流程參考 摘要 本文基於MySQL5.7爲基礎,討論與數據庫更新數據流程相關的一些內容。關於查詢流程的內容,可以參考這一

原创 查詢SQL語句到底是如何執行的

查詢SQL語句到底是如何執行的 想必大家對於SQL語句或多或少都有些瞭解,但你知道SQL語句在MySQL上是怎麼運行的麼,它到底做了哪些操作呢? SQL執行過程示意圖 連接器 連接器,顧名思義,作用就是與MySQL服務器建立連接

原创 MySQL事務控制和鎖機制

摘要 本文基於MySQL5.7爲基礎,討論與數據庫事務和鎖的相關內容。 鎖機制 根據加鎖的範圍,MySQL裏面的鎖可以分成全局鎖、表級鎖和行鎖三類。 全局鎖 全局鎖能夠對整個庫實例進行加鎖。 加鎖的語法: FLUSH TABLES

原创 SQL優化之Select語句

優化select語句 爲了使慢速SELECT ... WHERE查詢更快,首先要檢查的是是否可以添加索引。爲避免浪費磁盤空間,請構造組合索引。 調整函數調用,使函數調用從一多次減少爲一次,從而極大地提高了效率。 定期使用ANAL

原创 SQL優化之Change語句

INSERT優化 插入行所需的時間由以下因素決定,其中數字表示近似比例: 連接:(3) 向服務器發送查詢:(2) 解析查詢:(2) 插入行:(1×行大小) 插入索引:(1×索引數) 斷開連接:(1) 您可以使用以下方法來加快插