mysql常見問題分享 baidu

2021-07-07 07:20:01 字數 1683 閱讀 3292

今天就記錄這些, 給大家分享一下

多點寫入 – 佇列 會造成資料不一致

中間層 具有 : 讀寫分離, 連線池,負載均衡, – 中間層不能有問題

使用虛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支付寶扣錢...