原创 MySQL 技術內幕——數據庫架構

如何設計一個數據庫? 要設計一個關係型數據庫,首先要劃分爲兩部分,存儲模塊和程序實例模塊,程序實例實現了對存儲模塊的管理。 其中索引管理和鎖管理是重點。 1、爲什麼要使用索引? 最基本的數據查詢方式便是全表掃描,全表掃描是非常慢

原创 MySQL 性能調優——索引優化

本篇依然可以使用 explain 工具,分析 SQL 執行實際使用的索引。 聯合索引的最左匹配原則,非常重要的原則: MySQL 會一直向右匹配直到遇到範圍查詢(>、<、between、like)就停止匹配,比如 where a

原创 MySQL 性能調優——庫表結構優化

良好的數據庫邏輯設計和物理設計是數據庫獲得高性能的基礎。 數據庫結構優化的目的: 減少數據冗餘(相同的數據在多個地方存在); 儘量避免數據維護中出現更新,插入和刪除異常(通過範式化設計解決); 插入異常:如果表中的某個實體隨着

原创 MySQL 技術內幕——MySQL Cluster

高可用性(High Availability)指的是通過儘量縮短因日常維護操作(計劃)和突發的系統崩潰(非計劃)所導致的停機時間,以提高系統和應用的可用性。常見的高可用衡量指標有 5 個 9、4 個 9、3 個 9,例如 5 個

原创 MySQL 技術內幕——主從同步原理

如何避免 MySQL 單點故障? 利用MySQL的主從複製來解決MySQL的單點問題; MySQL 主從同步,Master 必須啓用 binlog,即二進制日誌,binlog 記錄了所有寫操作的 SQL 語句,不記錄任讀操作。

原创 MySQL 技術內幕——鎖模塊

數據庫鎖按照鎖的粒度劃分,可分爲表級鎖、行級鎖、頁級鎖;按照鎖級別劃分,可分爲共享鎖、排他鎖;按照加鎖方式劃分,可分爲自動鎖、顯式鎖;按照操作劃分,可分爲DML 鎖、DDL 鎖;按照使用方式劃分,可分爲樂觀鎖、悲觀鎖。 1、MyI

原创 MySQL 技術內幕——存儲引擎

數據庫存儲引擎的選擇會對性能產生直接的影響。MySQL體系結構如下: 存儲引擎是針對於表的而不是針對於庫的(一個庫中的不同表可以使用不同的存儲引擎)。MyISAM 是 MySQL 5.5 之前版本默認的存儲引擎。MySQL 5.

原创 MySQL 性能調優——SQL 優化

數據庫性能的影響因素很多,包括: 影響因素 說明 解決方案 SQL 查詢速度 存在慢查詢 SQL 大表和大事務 MySQL 單錶行數超過千萬行或單表數據超過10GB就會影響性能。 數據庫存儲引擎

原创 Redis 技術內幕——布隆過濾器

現有 50 億個電話號碼,如何快速準確判斷某 10 萬個電話號碼是否在這 50 億中。 如果通過數據庫查詢實現會非常慢。 如果數據預放在集合中,50 億 x 8 字節,大概需要 40 GB內存,內存浪費或不夠。 如果使用 hype

原创 Spring MVC 的原理

Spring MVC 是以請求爲驅動,圍繞 Servlet 設計,將請求發給控制器,然後通過模型對象,分派器來展示請求結果視圖。其中核心類是 DispatcherServlet,它是一個 Servlet,頂層是實現的 Servle

原创 Redis 性能調優——內存優化

本篇主要介紹 Redis 內存優化的一些技巧。 1.內存消耗 1、內存使用統計 Redis 可以通過 info memory 命令來查看內存使用情況,屬性說明如下: 屬性名 屬性說明 used_memory Redi

原创 Linux 下 Nginx JDK Tomcat MySQL 安裝指南

本篇主要講解 Nginx、JDK、Tomcat 和 MySQL 在 Linux 下的安裝方法,注重實用性,每個部分之間沒有太大關係。這裏 Linux 選擇 CentOS 7.2,通過 SSH 進行遠程操作,本地環境如果是 Wind

原创 Redis 技術內幕——Redis Cluster

Redis 在 3.0 版本中提供了 Redis Cluster (集羣) 來滿足分佈式的需求。Redis Cluster 採用無中心結構,每個節點保存數據和整個集羣的狀態,每個節點都和其他所有節點連接,節點之間使用流言協議 (G

原创 Redis 技術內幕——Redis Sentinel

Redis Sentinel(哨兵)是 Redis 官方提供的集羣管理工具,是 Redis 高可用的解決方案,本身是一個獨立運行的進程,它可以監視多個 Master-Slave 集羣,發現 Master 宕機之後,能進行自動切換,

原创 Redis 性能調優——緩存設計優化

Redis 是一個開源的高性能的 Key-Value 服務器。本篇主要介紹一下緩存的設計與優化。 1. 緩存的受益與成本 - 說明 緩存的受益 1、加速讀寫,通過緩存加速讀寫速度,例如 CPU L1/L2/L3 Ca