中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql的性能如何實現優化

發布時間:2020-06-02 17:34:21 來源:網絡 閱讀:409 作者:三月 欄目:MySQL數據庫

下文給大家帶來關于mysql的性能如何實現優化,感興趣的話就一起來看看這篇文章吧,相信看完mysql的性能如何實現優化對大家多少有點幫助吧。

MYSQL性能優化 慢查詢分析

1)性能瓶頸定位

Show 命令 慢查詢日志 explain 分析查詢  profiling 分析查詢

2)索引及查詢優化 3)配置優化

MySQL 數據庫是常見的兩個瓶頸是 CPU 和 I/O 的瓶頸,CPU 在飽和的時候一般發生在數據裝入內存或從磁盤上讀取數據時候。

可以用mpstat, iostat, sar 和 vmstat 來查看系統的性能狀態。

mysql的性能如何實現優化

iostat,

mysql的性能如何實現優化

mysql的性能如何實現優化

優化數據庫的性

能,通常有三種:使用索引,使用 EXPLAIN 分析查詢以及調整 MySQL 的內部配置。

1 、 查詢與索引優化分析

在優化 MySQL 時,通常需要對數據庫進行分析EXPLAIN 分析查詢,profiling 分析以及 show 命令查詢系統狀態及系統變量,通過定位分析性能的瓶頸,才能更好的優化數據庫系統的性能。

查看 MySQL云服務器配置信息 mysql> show variables;

查看 MySQL云服務器運行的各種狀態值 mysql> show global status;

# mysqladmin variables -u username -ppassword——顯示系統變量

mysql的性能如何實現優化

# mysqladmin extended-status -u username -ppassword——顯示狀態信息

mysql的性能如何實現優化

比較全的 show 命令的使用可參考:mysql>help show

或 http://dev.mysql.com/doc/refman/5.7/en/show.html

慢查詢日志開啟:

在配置文件 my.cnf 中在 [mysqld] 一行下面加入 3 個配置參數,并重啟 mysql 服務

slow_query_log = 1 //0 關閉 1 開啟

slow_query_log_file = /usr/local/mysql/data/slow-query.log //慢查詢日志存放地點

long_query_time = 1 //表示查詢超過 1 秒才記錄

在 my.cnf 中添加 log-queries-not-using-indexes 參數,表示向慢查詢日志中記錄下沒有使用索引的查詢。

二 查看慢查詢的設置信息

mysql> show variables like '%slow_query_log%';

mysql的性能如何實現優化

mysql> show variables like '%long_query_time%';

化這個 sql 查詢語句

mysql> select * from test1.tb1 where entertime < '2016-9-3' or entertime > '2016-9-3';

explain 分析查詢

使用 EXPLAIN 關鍵字可以模擬優化器執行 SQL 查詢語句,從而知道 MySQL 是如何處理你的

SQL 語句的。

mysql的性能如何實現優化

explain 模擬優化器執行 sql 語句來看是沒有使用索引查詢的,而是全表掃描

優化方法:在 stuname 列上創建索引

mysql> create index index_stuname on test1.tb1(stuname);

再次執行 explain

mysql> explain select * from test1.tb1 where stuname='admin'\G;

mysql的性能如何實現優化

profiling 分析查詢

通過慢日志查詢可以知道哪些 SQL 語句執行效率低下,通過 explain 我們可以得知 SQL 語句具體執行情況,索引使用等,還可以結合 show 命令查看執行狀態。

mysql的性能如何實現優化mysql的性能如何實現優化

select @@profiling; //0 表示未開啟

mysql的性能如何實現優化

執行要測試的 sql 語句

mysql> select * from test1.tb1 where stuname='admin' and entertime='2016-9-1';

 

mysql> show profiles\G; //可以得到被執行的 SQL 語句的時間和 ID

status:是 profile 里的狀態,duration:是 status 狀態下的耗時。

   Mysql配置優化

Mysql 參數優化對于不同的網站,及其在線量,訪問量,帖子數量,網絡情況,以及機器硬件配置都有關系,優化不可能一次性完成,需要不斷的觀察以及調試才有可能得到最佳效果。

1) 連接請求的變量:

1. max_connections

數值過小會經常出現 ERROR 1040: Too many connections 錯誤,可以過 mysql> show status like

'connections';通配符查看當前狀態的連接數量(試圖連接到MySQL(不管是否連接成功)的連接數),以定奪該值的大小。

mysql的性能如何實現優化

最大連接數

mysql的性能如何實現優化

max_used_connections / max_connections * 100% (理想值≈ 85%)

如果 max_used_connections 跟 max_connections 相同那么就是 max_connections 設置過低或者超過云服務器負載上限了,低于 10%則設置過大。

2.back_log

MySQL 能暫存的連接數量。當主要 MySQL 線程在一個很短時間內得到非常多的連接請求,它就會起作用。

如何設置 back_log?

修改/etc/my.cnf 文件,在[mysqld]下面添加如下內容,如設置最大連接數為 1024back_log = 數值  重啟

3.wait_timeout 和 interactive_timeout

wait_timeout -- 指的是 MySQL在關閉一個非交互的連接之前所要等待的秒數interactive_time -- 指的是 mysql 在關閉一個交互的連接之前所要等待的秒數。

wait_timeout:

(1)如果設置大小,那么連接關閉的很快,從而使一些持久的連接不起作用

(2)如果設置太大,容易造成連接打開時間過長,在 show processlist 時,能看到太多的 sleep

狀態的連接,從而造成 too many connections 錯誤

3)一般希望 wait_timeout 盡可能地低

interactive_timeout 的設置將要對你的 web application 沒有多大的影響

查看 wait_timeout 和 interactive_timeout

mysql> show variables like '%wait_tmeout%';

mysql的性能如何實現優化

mysql> show variables like '%interactive_timeout%';

mysql的性能如何實現優化

如何設置 wait_timeout 和 interactive_timeout ?

修改/etc/my.cnf 文件,在[mysqld]下面添加如下內容

 wait_timeout=100

interactive_timeout=100

重啟 MySQL Server 進入后,查看設置已經生效。

 全局緩沖:

4.key_buffer_size

key_buffer_size 指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值 Key_read_requests 和 Key_reads,可以知道 key_buffer_size 設置是否合理。

mysql的性能如何實現優化

一共有 6 個索引讀取請求,有 3 個請求在內存中沒有找到直接從硬盤讀取索引,計算索引未命中緩存的概率:

key_buffer_size 只對 MyISAM 表起作用。即使你不使用 MyISAM 表,但是內部的臨時磁盤表是 MyISAM 表,也要使用該值。可以使用檢查狀態值 created_tmp_disk_tables 

mysql的性能如何實現優化

調整 key_buffer_size

默認配置數值是 8388608(8M),主機有 4GB 內存,可以調優值為 268435456(256MB)修改/etc/my.cnf 文件,在[mysqld]下面添加如下內容

5. query_cache_size(查詢緩存簡稱 QC)

使用查詢緩沖,MySQL 將查詢結果存放在緩沖區中,今后對于同樣的 SELECT 語句(區分大小寫),將直接從緩沖區中讀取結果。

mysql的性能如何實現優化

如果該值顯示較大,則說明 Query Cache 中的內存碎片較多了,FLUSH QUERY CACHE 會對緩存中的碎片進行整理

Qcache_queries_in_cache:當前 Query Cache 中 cache 的 Query 數量;Qcache_total_blocks:當前 Query Cache 中的 block 數量;。查詢云服務器關于 query_cache 的配置:

mysql的性能如何實現優化

query_cache_limit:超過此大小的查詢將不緩存

query_cache_min_res_unit:緩存塊的最小大小 ,query_cache_min_res_unit 的配置是一柄”雙刃劍”,默認是 4KB,設置值大對大數據查詢有好處,但如果你的查詢都是小數據查詢,就容易造成內存碎片和浪費。

在優化之前執行 mysqlslap 工具進行測試

mysql的性能如何實現優化

優化之后執行 mysqlslap 工具進行測試

mysql的性能如何實現優化

看了以上關于mysql的性能如何實現優化詳細內容,是否有所收獲。如果想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

聂拉木县| 谷城县| 文山县| 常山县| 惠东县| 济宁市| 武隆县| 八宿县| 固原市| 盈江县| 井研县| 博爱县| 呼伦贝尔市| 彰武县| 苏尼特右旗| 吴忠市| 宁国市| 柞水县| 克山县| 龙山县| 石河子市| 砚山县| 容城县| 新邵县| 云龙县| 葫芦岛市| 高密市| 晋宁县| 林芝县| 曲松县| 惠东县| 曲阜市| 灵宝市| 响水县| 故城县| 久治县| 东乡族自治县| 吕梁市| 长阳| 龙里县| 晋江市|