mysql學習筆記(六)

2021-09-19 04:27:53 字數 2706 閱讀 6896

25效能優化

優化原則:減少系統的瓶頸,減少資源的占用,增加系統的反應速度。

使用show status語句查詢mysql資料庫的效能引數

show status like 『value』;

value對應的引數

connection:連線mysql伺服器的次數

uptime:mysql伺服器的上線時間

slow_queries:慢查詢的次數

com_select:查詢操作的次數

com_insert:插入操作的次數

com_update:更新操作的次數

com_delete:刪除操作的次數

(1)分析查詢語句

用explain和describe

mysql>explain select * from person;

mysql>describe select * from person;

在使用like關鍵字查詢的查詢語句中,如果匹配字串的第乙個字元為「%」,則索引不會起作用,只有「%」不放在第乙個位置的時候,索引才會起作用。

查詢語句的查詢條件只有or關鍵字,且or的前後的兩個條件中的列都是索引時,查詢中才使用索引。

(3)優化

對myisam引擎的表優化

優化子查詢,在mysql中,可以使用連線(join)來代替子查詢。

優化資料庫結構

將字段多的表分解成多個表

增加中間表

合理增加冗餘字段

優化插入記錄的速度

①.禁用索引

alter table table_name disable keys;//禁用索引

alter table table_name enable keys;//恢復索引

②.禁止唯一性檢查

set unique_checks=0 //禁用

set unique_checks=1 //開啟

使用批量插入

使用load data infile批量匯入

對於innodb引擎的表優化

①禁止唯一性檢查

set unique_checks=0 //禁用

②禁止外來鍵檢查

set foreign_key_checks=0 //禁用

set foreign_key_checks=1 //開啟

③禁止自動提交

set autocommit=0 //禁用

set autocommit=1 //開啟

(3)分析表、檢查表和優化表

分析表mysql>analyze table table_name;

檢查表mysql>check table table_name;

quick、fast、medium、extended、changed

優化表optimize table table_name;

(4)優化mysql伺服器

優化硬體

優化mysql的引數

key_buffer_size:表示索引緩衝區的大小。不是越大越好,需要根據記憶體的大小。如果這個值太大容易導致作業系統頻繁換頁,也會降低系統效能。

table_cache:表示同時開啟表的個數。數值越大表示開啟的表的個數越多,不是越大也好,數值到會影響系統的效能。

query_cache_size:表示查詢緩衝區的大小。需要配合query_cache_type一起使用,當query_cache_type為0時,表示不使用緩衝區;當query_cache_type=1時,表示所有查詢都使用緩衝區,除非在查詢語句中指定sql_no_cache,如select sql_no_cache * from tb1_name;當query_cache_type=2時,只有在查詢語句中使用了sql_cache關鍵字才能使用查詢緩衝區,使用查詢緩衝區可以提高查詢的速度,只適用於修改操作少且經常執行重複操作的。

sort_buffer_size:表示排序緩衝區的大小,數值越大,進行排序的速度越快。

read_buffer_size:表示每個執行緒連續掃瞄時為掃瞄的每個表分配的緩衝區的大小(位元組),當執行緒從表中連續讀取記錄時需要用到這個緩衝區。set session_read_buffer_size=n可以臨時設定這個值。

read_rnd_buffer_size:表示每個執行緒保留的緩衝區的大小,與read_buffer_size相似,但主要用於儲存按特定順序讀取出來的記錄,也可以使用set session_read_buffer_size=n可以臨時設定這個值,如果頻繁的進行多次掃瞄,可以增加改值。

innodb_buffer_pool_size:表示innodb型別的表和索引的最大快取,這個值越大,查詢速度會越快,但是太大會影響作業系統效能。

max_connection:資料庫最大連線。

innodb_flush_log_at_trx_commit:表示何時將緩衝區的資料寫入日誌檔案,並且將日誌檔案寫入到磁碟中。這個引數對innodb引擎非常重要。0、1、2三個值。

back_log:表示在mysql暫時停止回答新請求之前的短時間內,多少個請求可以存著堆疊中。

interaction_timeout:表示伺服器在關閉連線前等待行動的秒數。

sort_buffer_size:表示每個要進行排序的執行緒分配的緩衝區的大小。增加這個引數可以提高order by 和group by的操作速度。

thread_cache_size:表示可以復用的執行緒數量。如果有很多新的執行緒,為了提高效能可以增大改引數的值。

wait_timeout:表示伺服器在關閉乙個連線時等待行動的秒數。預設值為28800。

MySQL學習筆記(六)

今天介紹一下字串相關的mysql函式。length str 求str的長度。lcase str 與lower str 將字串變成小寫。ucase str upper str 將字串變成大寫。strcmp str1,str2 比較字串大小,第乙個比第二個小返回 1,第乙個比第二個大返回1,如果相等返回...

六天玩轉mysql筆記 mysql學習筆記 第六天

改變資料表的結構 alter table tb name action,action,action 使用alter table 之前,需要檢視資料表的當前定義,需要執行show create table 語句 alter table tb name modify columns 資料型別 alter...

Django 學習筆記(六)MySQL配置

環境 ubuntu16.4 工具 python3.5 一 安裝mysql資料庫 終端命令 sudo apt get install mysql server sudo apt get install mysql client sudo apt get install libmysqlclient d...