今天就記錄這些, 給大家分享一下
多點寫入 – 佇列 會造成資料不一致
中間層 具有 : 讀寫分離, 連線池,負載均衡, – 中間層不能有問題
使用虛ip obproxy
建議用innodb b+樹索引
主鍵 有序 便於查詢- b+樹儲存, 聚簇索引的葉子節點存放
查詢的值相對於原表較少, 建議用索引 eg 1000w 檢索1條資料使用索引
乙個表不建議超過5個索引
通過索引日誌, 進行刪減索引
mysql只能用乙個索引 可以用聯合索引
mysql索引的使用取決與b樹的結構
相同的語句執行多次可能會使用索引不一致, - 進行優化
explain除錯 支援select 如果使用delete 可以轉化為select 因為delete
explain 主要kan key:使用的索引型別, rows掃瞄的行, extra
組合索引 (a,b,c) a,c | b,c不會使用索引 原因在於b樹的資料結構特性造成的
mysql使用原則
資料量, 流量, 複雜度 - 不能同時滿足
量小 沒有啥大問題
資料量大,查詢要慎重 - 注意反作弊 ,有好多不可控性
設計技巧和規範-常見問題
字段型別不匹配
1條sql和多條sql的效能 - 1條複雜的sql 會產生一些臨時表, 還會阻塞其它的 - 主從
auto_commit = 0
ctrl+c 不能中斷 mysql請求
int是否夠用? – 記錄形式的 – 增長量不可控用 bigint
資料庫計數? select count(*)在innodb上表不會存 會造成掃瞄全表 頁面上的 統計不要在資料庫上統計
大結果集 – 可以對id分段-在拼接, 否則會造成網絡卡堵塞
資料庫中有熱資料的概念 是否有用的sql
設計技巧和規範-表設計
單錶不要超過1000w , 超出考慮分表
可以適量增加冗餘減少表關聯
設計技巧和規範-增刪改查類
不要在備庫中進行 大的統計查詢 - 會不精準
多條的insert拼接成一條提交效率會高
批量update和delete 可以採用 delete from table where id in (id 100個左右)
刪除資料多, 要命中索引, 增加limit –可以利用主鍵的自增的特點,
捕獲資料庫反饋的錯誤資訊 列印到日誌中
盡量使用cache 資料量小可以用
避免查詢結果超過正常的需求– 要有價值的資料顯示出來就可以了
減少表的關聯, 大表/主表
儘量減少distinct like group by order by ,union
盡量不用子查詢, 子查詢 會鎖表, 效率低
設計技巧和規範-分庫分表
按行數分段取模
按時間
壓測工具
tdpcopy
width="738" height="523" class="preview-iframe" scrolling="no" src="">
Mysql常見問題
1.安裝,推薦使用非安裝版.把解壓後的檔案拷貝到c盤根目錄下,並把總目錄改為mysql.然後進入windows命令 控制台,在c mysql bin下面執行mysqld nt install把它安裝為乙個服務,然後呼叫net start mysql啟動它,停止的命令是net stop mysql 想...
mysql常見問題
按照表中某一欄位排序,若該字段可能存在空值,公升序排列時空值排在最前面,降序排列是空值排在最後面。公升序排列時如果想讓空值排在最後面,可以 order by field1 is null,field1 asc 這麼寫。例如有個user表,按照 seq欄位排序。select from user ord...
MySQL常見問題
事務是指作為單個邏輯工作單元的一系列操作 一系列sql語句 當多個事務併發地訪問資料庫時就會產生同時讀取和 或修改同一資料的情況。若對併發操作不加控制就可能會訪問和儲存不正確的資料 髒讀 非重複讀 幻像讀 丟失修改的異常情況 破壞資料庫的一致性。a向b支付50 讀出a支付寶餘額 100 a支付寶扣錢...