91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Mysql中并發參數調整的示例分析

發布時間:2021-12-06 16:06:28 來源:億速云 閱讀:146 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Mysql中并發參數調整的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

查詢緩存優化

不建議使用,一般是在應用服務做緩存層,畢竟數據并發能力是有限的

概述

當開始Mysql的查詢緩存,執行相同的sql語句的時候,服務器就會直接從緩存中讀取結果,當數據被修改,之前的緩存會失效,修改比較頻繁的表不適合做查詢緩存

查詢流程

1、客戶端發送一條查詢給服務器
2、服務器先會檢查查詢緩存,如果命中了緩存,則立即返回存儲在緩存中的結果,否則進入下一階段
3、服務器端進行sql解析、預處理、再由優化器生成對應的執行計劃
4、根據生成的執行計劃,調用存儲引擎的Api來執行查詢
5、將結果返回給客戶端--并將查詢到的結果放到查詢緩存中

查詢緩存配置

查詢數據庫是否支持查詢緩存(YES or ON)
	show variables like 'have_query_cache';
查看數據庫是否開啟了查詢緩存 
	show variables like 'query_cache_type';
	OFF 或 0 查詢緩存功能關閉
	ON 或 1查詢緩存功能打開,select的結果符合緩存條件即會緩存,否則不予緩存,顯示指定SQL_NO_CACHE,不予緩存
	DEMAND 或 2 查詢緩存功能按需進行,顯示指定SQL_CACHE的SELECT語句才會緩存;其他不予緩存
查看查詢緩存的大小
	show variables like 'query_cache_size';
查看緩存的狀態
	show status like 'Qcache%';
		Qcache_free_blocks 緩存中可用的內存塊數量
		Qcache_free_memory 緩存中可用的內存量
		Qcache_hits 查詢緩存命中數
		Qcache_lowmen_prunes 由于內存不足而從查詢緩存中刪除的查詢數
		Qcache_not_cached 非緩存查詢的數量(query_cache_type設置而無法緩存)
		Qcache_queries_in_cache 查詢緩存中注冊的查詢數
		Qcache_total_blocks 查詢緩存中的塊總數
開啟查詢緩存
	找到mysql的配置文件添加 my.cnf 添加query_cache_type=1
	開啟查詢緩存結果是 
		query_cache_type=DEMAND   
		select SQL_CACHE id from table
	開啟查詢緩存結果是 
		query_cache_type=ON    
		select SQL_NO_CACHE id from table

查詢緩存失效的情況

sql語句不一致情況
查詢sql中有不確定信息:
	如 now(),current_date(),curdate(),curtime(),rand(),uuid(),database()
不使用任何表查詢語句
查詢 mysql ,infomation_schema或 performance_schema數據庫中的表時,不會走查詢緩存
在存儲函數,觸發器或事件的主體內執行的查詢
表修改會刪除查詢緩存,如 insert,update,delete,drop...

內存管理優化

內存優化原則

將盡量多的內存分配給Mysql做緩存,要給操作系統和其他程序預留足夠內存
MyISAM存儲引擎的數據文件讀取依賴于操作系統自身的IO緩存,因此,如果有MyISAM表,就要預留更多的內存給操作系統做IO緩存
排序區,連接區等緩存是分配給每個數據庫會話(session)專用的,其默認的設置要根據最大的連接數合理分配,如果設置太大,不但浪費資源,而且在并發連接較高時會導致無力內存耗盡

MyISAM內存優化

myisam存儲引擎使用key_buffer緩存索引塊,加速myisam索引的讀寫速度。對于myisam表的數據塊,mysql沒有特別的緩存機制,完全依賴于操作系統的io緩存
key_buffer_size=512M
	key_buffer_size的值越大效率越高,建議至少將1/4可用內存分配給key_buffer_size
show variables like 'key_buffer_size'; 查詢key_buffer_size的大小
red_buffer_size
	如果經常順序掃描myisam表,可以通過增大read_buffer_size的大小值來改善性能,但不能調的過大,因為key_buffer_size是每個session獨占的,如果設置多個會造成資源浪費
red_rnd_buffer_size
	經常需要排序的myisam表的查詢,如果帶有order by 子句的sql 適當增加red_rnd_buffer_size的值可以改善此類sql性能---也是session獨享的,也不能設置過大

InnoDB內存優化

InnoDB用一塊內存區做io緩存池,該緩存池不僅用來緩存innoDB的索引塊,而且也用來緩存innoDB的數據塊
inodb_buffer_pool_size
	該變量決定了innoDB存儲引擎和索引數據的最大緩存區大小,在保證操作系統及其他程序有足夠內存可用的情況下,值越大緩存命中率越高,訪問innoDb表需要的磁盤io就越少,性能也就越高
	innodb_buffer_pool_size=521M
innodb_log_buffer_size
	決定了innodb重做日志緩存的大小,對于可能產生大量更新記錄的大事務,增加innodb_log_buffer_size大小,可以避免innodb在事務提交前執行不必要的日志寫入磁盤io
	innodb_log_buffer_size=10M
show variables like 'innodb_buffer_pool_size';
innodb_flush_log_at_trx_commit
	控制innodb將log buffer中的數據寫入日志文件并flush磁盤的時間點,值分別為,0,1,2
innodb_thread_concurrency
	設置innodb線程的并發數,默認為0表示不受限制,如果要設置建議跟服務器的CPU核心數一致或者CPU核心數的兩倍
innodb_log_buffer_size
	執行日志文件所用的內存大小,以M為單位
innodb_log_files_in_group
	以循環的方式將日志文件寫到多個文件中
read_buffer_size
	mysql讀入緩沖區大小,對表進行順序掃描的請求將分配到一個讀入緩沖區
read_rnd_buffer_size
	mysql隨機讀的緩沖區大小

連接優化

max_connection

最大連接數,默認是151,linux一般可以支持500--1000具體根據服務器性能評估
show variables like 'max_connections';
	查看最大連接數

back_log

超過最大連接數后最大的等待數量,存放在堆棧中(一般是50+(max_connections/5)),最大不超過900
show variables like 'back_log'

table_open_cache

控制所有sql語句執行線程可打開表緩存數量,而在執行sql語句時,每一個sql執行線程至少要打開1個表緩存,該參數的值應該根據設置的最大連接數max_connectons以及每個連接執行關聯查詢中涉及的表的最大數量來設定

thread_cache_size

為了加快連接數據庫的速度,mysql會緩存一定數量的客戶服務線程以備重用,通過參數thread_cache_size可控制Mysql緩存客戶服務線程的數量

innodb_lock_wait_timeout

設置innoDB事務等待行鎖的時間,默認是50ms,可以根據需要動態設置,對于需要快速反饋的業務系統,可以將行鎖的等待時間調小,避免事務長時間掛起,對于后臺運行的批量處理程序,可以將行鎖的等待時間調大,以避免發生大的回滾操作
show variables like 'innodb_lock_wait_timeout';

日志

錯誤日志文件名稱,用戶記錄當mysql啟動和停止時,以及服務器在運行中發生發生任何驗證錯誤時相關信息

log_bin

指定二進制日志文件名稱,用于記錄對數據庫造成更改的所有語句

binlog_do_db binlog_ignore_db

指定將更新記錄到二進制日志的數據庫,其他所有沒有顯示指定的數據庫更新將忽略,不記錄在日志中

sync_binlog

指定多少次寫日志后同步磁盤

general_log=1

是否開啟查詢日志記錄

general_log_filefile_name(默認host_name.log)

指定查詢日志文件名,用戶記錄所有的查詢語句
查詢日志文件名:slow_query_log_file=slow_query.log
mysqldumpslow slow_query.log;查看慢查詢日志文件

slow_query_log=1

是否開啟慢查詢日志,1代表開啟,0代表關閉

long_query_time=3

設置慢查詢的時間,超過這個時間的查詢語句才會記錄日志

log_slow_admin_statements

是否將管理語句寫入慢查詢日志

關于“Mysql中并發參數調整的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

宜春市| 曲阜市| 缙云县| 渝北区| 平安县| 库尔勒市| 炎陵县| 赣州市| 武威市| 上蔡县| 特克斯县| 韶山市| 江津市| 碌曲县| 保靖县| 油尖旺区| 丽水市| 昭平县| 富民县| 夏河县| 甘孜县| 千阳县| 松潘县| 万源市| 新乡县| 湘乡市| 灌南县| 宁武县| 卓尼县| 浦东新区| 双峰县| 河北区| 连州市| 松原市| 孝义市| 澄迈县| 夏津县| 车致| 德兴市| 雷山县| 门头沟区|