效能優化
1.硬體選擇
cpu:oltp 高可用小事務查詢、olap分析系統倉庫
ram:越大越好
快磁碟儲存:ssd、陣列
優網路、系統:關dns、mysql
接入區dmg
內網core:dns、mysql
檔案控制代碼開啟數量即開闢io通道可命令:ulimit -n檢視 1024
2. 快取
redis、memcrched 記憶體中,減少mysql壓力
快取穿透:布隆過濾器bloom filter
快取雪崩:主從機制加高可用方案、高併發限流降級、資料預熱
主[從]複製:使用者、授權、開日誌
master->binary log二進位制日誌<-io thread->[relay log<->sql thread]
master_log_pos=0 從**開始、replicate_do_db 過濾
級聯主從解決不同步
3.分庫分表 mycat
分庫:系統複雜度上公升,聯合查詢、資料聚合
分表:水平拆分,2000萬以下資料可用索引,再多查詢時間指數型增加,系統複雜度上公升,拆分規則(取餘分表、一次hash)
4.mysql配置作用域 熱載入dynamic
全域性引數、會話引數
找配置檔案、覆蓋的
sort_buffer_size/join_buffer_size 快取池256~2m
innodb_buffer_pool_size 物理機80~90%給它
innodb_buffer_read/write_io_thread cpu核數2倍
innodb_print_all_deadlocks=1 死鎖日誌
innodb_log_file(buffer)_size 預設48m
innodb_flush_log_at_trx_commit=1
刷盤 buffer oscache(0:mysql程序級別,1:v,2:作業系統級別) logfile
刷髒數 innodb_io_capacity 預設zoom
庫表設計:1nf 多列 2nf 多關聯 3nf 外來鍵
5.慢查詢定位:業務驅動、測試驅動、慢查詢日誌
time
user@host
query_time lock_time row_sent
rows_examined
set timestamp
select
mysqldumpslow --help
-s order 排序、-t num 前幾名
慢查詢排查:執行計畫看type、rows、filtered、extra、key、key_len
show profile 分析sql調優,會話級別屬性先開啟
6.sql優化
1. 基於索引完成掃瞄(sql結果集)
2.索引不用函式或運算
3.where like %放右邊
4.索引掃瞄,聯合索引左->右越多越好
5.索引排序
6.有效列
7.join 小結果驅動大的
MySQL核心原理2
一 引擎 1.csv儲存引擎 適用於1.快速匯入匯出 2.匯入到csv引擎資料庫 2.archive 壓縮協議 arz 存,20 1占用磁碟少,只可insert和select,只許自增id鍵 適用於1.日誌 文件資料備份 2.大裝置高頻資料採集 3.memory 資料在記憶體效率高,表限定大小16m...
MySQL核心知識學習之路(4)
作為乙個後端工程師,想必沒有人沒用過資料庫,跟我一起複習一下mysql吧,本文是我學習 mysql實戰45講 的總結筆記的第四篇,總結了mysql的鎖相關知識。所謂全域性鎖,就是對整個資料庫例項加鎖,其命令為 mysql flush tables with read lock 以下該命令會簡稱為ft...
angularJS核心原理
一 angularjs優點和缺點 優點 1.1免去重複勞動 獲取元素 給元素加事件 建立元素 1.2接管ui angularjs根據資料建立ui元素,免去手工建立ui元素。1.3自動同步 根據資料個數建立對應的html元素。缺點 二 angularjs一切皆資料 三 angularjs三要素 4.1...