mysql安全小貼士 Mysql優化的一些小貼士

2021-10-17 19:46:37 字數 2211 閱讀 7818

(1) 針對innodb表,盡量不執行 select count(*) 語句,因為innodb表沒有類似myisam那樣的內部計數器來記錄表記錄總量,執行這個操作將會全表掃瞄,速度很慢.

(2) 盡量使用myisam表,除非必須使用其他型別,因為myisam型別的總體讀寫效率是相當高的,缺點是表級鎖,而不是行/頁級鎖.

(3) 善用 explain來幫助你分析查詢優化情況

(4) 如果需要對乙個較大的且併發讀寫較多的資料表做 group by 等統計操作,建議使用摘要表來儲存統計資訊,定期更新統計表,這可能獲得很大的效能改善.

(5) 查詢時如果有 order by分句的話,注意讓它的字段順序和索引字段順序對應,這樣能加快排序速度

(6) 如果有乙個多字段索引,則查詢時,必須按照索引順序來使用,否則該索引不會用到.例如:

索引 `idx_`(col1, col2, col3),那麼查詢 select .... from ... where col1=1 and col2=2; 使用索引,而查詢 ... where col2=2 and col3=3; 或 ... where col1=1 and col3=3; 則不使用索引.

where 中的條件如果有恒量型別的(如 `field` = 1),就盡量放在前面,這樣能更快的執行過濾.

(7) 2 個表連線時,連線欄位的型別最好一致(包括字段長度),這樣的話索引速度快多了.

(8) 大部分情況下,字元型別的字段索引值需要一部分,例如 create index char_idx on tbl1 ( name(10) );

(9) 盡量使用最合適的資料型別,能使用 enum 就不使用 tinyint ,能使用 smallint 就不使用 mediumint.這樣能節省儲存空間,增加資料儲存量,提高搜尋速度.不要擔心這樣會對省級產生很大的影響,因為加入從 tinyint 型別改變為 int 的話,並不會改變原來的資料.

(10) 如果知道某個表總是頻繁使用的話,可以把它放到 hot_cache 中,用以下方法:

set global hot_cache.key_buffer_size=128*1024;

cache index `***` in hot_cache;

(11) 把拖沓複雜,速度慢的的查詢分解成多個簡潔明瞭的查詢,這樣儘管查詢次數多了,但是總體速度和效率卻可能反而更高了,而且也減少了鎖表的可能.

(12) 執行查詢時,盡量不使用外部函式,因為這樣的話就無法使用可能存在的索引,並且無論如何都會極大地降低效率.如: ... where `create_time` > unix_timestamp(now()); 這樣的查詢.可以在程式中把當前的時間取得,然後直接執行構造好了的sql語句.

(13) 在索引欄位上使用 like 查詢時,左邊不要使用 '%' 修飾符,這樣就可以利用索引,否則無法使用索引.如 ... `name` like 'yejr%';.

(15) 如果有可能,多使用儲存過程,這大概能獲得 22% 的效能提高.

(16) 如果併發訪問量相對最大連線數小多了的話,最好使用永久連線,這樣能節省不少連線時的系統資源損耗.

(17) 定期的在myisam表上執行 optimize table,這能整理隨便,提高索引效率.

(18) 如果你主要按 col1,col2,...順序檢索記錄,請在對錶大量更改後執行 alter table ... order by col1, col2, ... 語句,這可以獲得更好的效能.

(19) 對於頻繁更改的myisam表,應盡量避免更新所有變長字段(varchar、blob和text).

(20) 對於記錄總數超過500萬的單錶,就應該趕緊考慮分表了.分表策略有多種,比如按id號段,或者按時間切分,等等.

(21) 建立資料表時盡量指定字段不能為null,並且有預設值.

(22) 使用 load data,而不是使用大批量的 insert 語句來匯入資料,即使用insert的話,可以同時insert多條資料,提高效率

(23) 使資料表名和欄位名盡可能的短,例如在 user 表中使用欄位名 name,而不是 user_name.

(24) 用 delay_key_write = 1 選項讓myisam更快地更新索引,因為在表關閉之前它們不重新整理到硬碟上.缺點是如果伺服器如果突然被殺掉了,重啟之後就必須執行 myisamchk 修復索引才行.

(25) 採用複製機制來分攤讀資料的負載,把寫資料只放在主伺服器上,把讀平均分攤到各個從伺服器上,能大大提高系統負載.

(26)  如果是批量匯入資料到db裡,可以考慮先關閉索引,等匯入後,再加上索引,已提高效率

mysql安全機制 Mysql安全機制

在mysql下mysql庫中有6個許可權表 mysql.user 使用者字段,許可權字段,安全字段,資源控制字段 mysql.db mysql.host 使用者字段,許可權字段 mysql.tables priv,mysql.columms priv,mysql.procs priv 一 使用者管理...

mysql安全管理 MySQL安全管理

資料庫伺服器通常包含關鍵的資料,確保這些資料的安全和完整需要利用訪問控制。一 訪問控制 mysql伺服器的安全基礎 使用者應該對他們需要的資料具有適當的訪問權,既不能多也不能少。訪問控制 你需要給使用者提供他們所需的訪問權,且僅提供他們所需的訪問權。在日常工作中,絕不能使用root,應該建立一系列的...

mysql安全管理 MySQL 安全管理

1.使用者管理 mysql將帳戶儲存在系統資料庫mysql的user表,mysql使用者名稱最長可達32個字元 檢視所有使用者 select user,host,authentication string from user 檢視當前使用者的許可權 show grants 檢視gg使用者許可權 sh...