亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql的并發(fā)參數(shù)調(diào)整詳解

 更新時(shí)間:2021年12月06日 15:00:30   作者:奔跑的蝸牛...  
大家好,本篇文章主要講的是Mysql的并發(fā)參數(shù)調(diào)整詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

查詢緩存優(yōu)化

不建議使用,一般是在應(yīng)用服務(wù)做緩存層,畢竟數(shù)據(jù)并發(fā)能力是有限的

概述

當(dāng)開始Mysql的查詢緩存,執(zhí)行相同的sql語(yǔ)句的時(shí)候,服務(wù)器就會(huì)直接從緩存中讀取結(jié)果,當(dāng)數(shù)據(jù)被修改,之前的緩存會(huì)失效,修改比較頻繁的表不適合做查詢緩存

查詢流程

1、客戶端發(fā)送一條查詢給服務(wù)器
2、服務(wù)器先會(huì)檢查查詢緩存,如果命中了緩存,則立即返回存儲(chǔ)在緩存中的結(jié)果,否則進(jìn)入下一階段
3、服務(wù)器端進(jìn)行sql解析、預(yù)處理、再由優(yōu)化器生成對(duì)應(yīng)的執(zhí)行計(jì)劃
4、根據(jù)生成的執(zhí)行計(jì)劃,調(diào)用存儲(chǔ)引擎的Api來(lái)執(zhí)行查詢
5、將結(jié)果返回給客戶端--并將查詢到的結(jié)果放到查詢緩存中

查詢緩存配置

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

查詢緩存失效的情況

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

內(nèi)存管理優(yōu)化

內(nèi)存優(yōu)化原則

將盡量多的內(nèi)存分配給Mysql做緩存,要給操作系統(tǒng)和其他程序預(yù)留足夠內(nèi)存
MyISAM存儲(chǔ)引擎的數(shù)據(jù)文件讀取依賴于操作系統(tǒng)自身的IO緩存,因此,如果有MyISAM表,就要預(yù)留更多的內(nèi)存給操作系統(tǒng)做IO緩存
排序區(qū),連接區(qū)等緩存是分配給每個(gè)數(shù)據(jù)庫(kù)會(huì)話(session)專用的,其默認(rèn)的設(shè)置要根據(jù)最大的連接數(shù)合理分配,如果設(shè)置太大,不但浪費(fèi)資源,而且在并發(fā)連接較高時(shí)會(huì)導(dǎo)致無(wú)力內(nèi)存耗盡

MyISAM內(nèi)存優(yōu)化

myisam存儲(chǔ)引擎使用key_buffer緩存索引塊,加速myisam索引的讀寫速度。對(duì)于myisam表的數(shù)據(jù)塊,mysql沒(méi)有特別的緩存機(jī)制,完全依賴于操作系統(tǒng)的io緩存
key_buffer_size=512M
	key_buffer_size的值越大效率越高,建議至少將1/4可用內(nèi)存分配給key_buffer_size
show variables like 'key_buffer_size'; 查詢key_buffer_size的大小
red_buffer_size
	如果經(jīng)常順序掃描myisam表,可以通過(guò)增大read_buffer_size的大小值來(lái)改善性能,但不能調(diào)的過(guò)大,因?yàn)閗ey_buffer_size是每個(gè)session獨(dú)占的,如果設(shè)置多個(gè)會(huì)造成資源浪費(fèi)
red_rnd_buffer_size
	經(jīng)常需要排序的myisam表的查詢,如果帶有order by 子句的sql 適當(dāng)增加red_rnd_buffer_size的值可以改善此類sql性能---也是session獨(dú)享的,也不能設(shè)置過(guò)大

InnoDB內(nèi)存優(yōu)化

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

連接優(yōu)化

max_connection

最大連接數(shù),默認(rèn)是151,linux一般可以支持500--1000具體根據(jù)服務(wù)器性能評(píng)估
show variables like 'max_connections';
	查看最大連接數(shù)

back_log

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

table_open_cache

控制所有sql語(yǔ)句執(zhí)行線程可打開表緩存數(shù)量,而在執(zhí)行sql語(yǔ)句時(shí),每一個(gè)sql執(zhí)行線程至少要打開1個(gè)表緩存,該參數(shù)的值應(yīng)該根據(jù)設(shè)置的最大連接數(shù)max_connectons以及每個(gè)連接執(zhí)行關(guān)聯(lián)查詢中涉及的表的最大數(shù)量來(lái)設(shè)定

thread_cache_size

為了加快連接數(shù)據(jù)庫(kù)的速度,mysql會(huì)緩存一定數(shù)量的客戶服務(wù)線程以備重用,通過(guò)參數(shù)thread_cache_size可控制Mysql緩存客戶服務(wù)線程的數(shù)量

innodb_lock_wait_timeout

設(shè)置innoDB事務(wù)等待行鎖的時(shí)間,默認(rèn)是50ms,可以根據(jù)需要?jiǎng)討B(tài)設(shè)置,對(duì)于需要快速反饋的業(yè)務(wù)系統(tǒng),可以將行鎖的等待時(shí)間調(diào)小,避免事務(wù)長(zhǎng)時(shí)間掛起,對(duì)于后臺(tái)運(yùn)行的批量處理程序,可以將行鎖的等待時(shí)間調(diào)大,以避免發(fā)生大的回滾操作
show variables like 'innodb_lock_wait_timeout';

日志

錯(cuò)誤日志文件名稱,用戶記錄當(dāng)mysql啟動(dòng)和停止時(shí),以及服務(wù)器在運(yùn)行中發(fā)生發(fā)生任何驗(yàn)證錯(cuò)誤時(shí)相關(guān)信息

log_bin

指定二進(jìn)制日志文件名稱,用于記錄對(duì)數(shù)據(jù)庫(kù)造成更改的所有語(yǔ)句

binlog_do_db binlog_ignore_db

指定將更新記錄到二進(jìn)制日志的數(shù)據(jù)庫(kù),其他所有沒(méi)有顯示指定的數(shù)據(jù)庫(kù)更新將忽略,不記錄在日志中

sync_binlog

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

general_log=1

是否開啟查詢?nèi)罩居涗?

general_log_filefile_name(默認(rèn)host_name.log)

指定查詢?nèi)罩疚募?,用戶記錄所有的查詢語(yǔ)句
查詢?nèi)罩疚募簊low_query_log_file=slow_query.log
mysqldumpslow slow_query.log;查看慢查詢?nèi)罩疚募?

slow_query_log=1

是否開啟慢查詢?nèi)罩荆?代表開啟,0代表關(guān)閉

long_query_time=3

設(shè)置慢查詢的時(shí)間,超過(guò)這個(gè)時(shí)間的查詢語(yǔ)句才會(huì)記錄日志

log_slow_admin_statements

是否將管理語(yǔ)句寫入慢查詢?nèi)罩?/pre>

到此這篇關(guān)于Mysql的并發(fā)參數(shù)調(diào)整詳解的文章就介紹到這了,更多相關(guān)Mysql并發(fā)參數(shù)調(diào)整內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL 隨機(jī)密碼生成代碼

    MySQL 隨機(jī)密碼生成代碼

    晚上有朋友問(wèn)起,簡(jiǎn)單的寫了一個(gè)。
    2009-09-09
  • Mysql中varchar類型一些需要注意的地方

    Mysql中varchar類型一些需要注意的地方

    這篇文章主要介紹了Mysql中varchar類型一些需要注意的地方,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2021-01-01
  • mysql8.0找不到my.ini配置文件的問(wèn)題及解決

    mysql8.0找不到my.ini配置文件的問(wèn)題及解決

    這篇文章主要介紹了mysql8.0找不到my.ini配置文件的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL slave_net_timeout參數(shù)解決的一個(gè)集群?jiǎn)栴}案例

    MySQL slave_net_timeout參數(shù)解決的一個(gè)集群?jiǎn)栴}案例

    這篇文章主要介紹了MySQL slave_net_timeout參數(shù)解決的一個(gè)集群?jiǎn)栴}案例,問(wèn)題日志請(qǐng)見(jiàn)正文,本文使用slave_net_timeout參數(shù)解決了這個(gè)問(wèn)題,需要的朋友可以參考下
    2015-05-05
  • mysql缺少my.ini文件的最佳解決方法

    mysql缺少my.ini文件的最佳解決方法

    my.ini是MySQL數(shù)據(jù)庫(kù)中使用的配置文件,修改這個(gè)文件可以達(dá)到更新配置的目的,下面這篇文章主要給大家介紹了關(guān)于mysql缺少my.ini文件的最佳解決方法,需要的朋友可以參考下
    2024-01-01
  • MySql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    MySql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn)總結(jié)

    這篇文章主要介紹了MySql數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)點(diǎn),總結(jié)整理了mysql數(shù)據(jù)庫(kù)基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下
    2020-06-06
  • Mysql悲觀鎖和樂(lè)觀鎖的使用示例

    Mysql悲觀鎖和樂(lè)觀鎖的使用示例

    這篇文章主要給大家介紹了關(guān)于Mysql悲觀鎖和樂(lè)觀鎖使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 選擇MySQL數(shù)據(jù)庫(kù)進(jìn)行連接的簡(jiǎn)單示例

    選擇MySQL數(shù)據(jù)庫(kù)進(jìn)行連接的簡(jiǎn)單示例

    這篇文章主要介紹了選擇MySQL數(shù)據(jù)庫(kù)進(jìn)行連接的簡(jiǎn)單示例,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • MySQL深分頁(yè)問(wèn)題解決的實(shí)戰(zhàn)記錄

    MySQL深分頁(yè)問(wèn)題解決的實(shí)戰(zhàn)記錄

    優(yōu)化項(xiàng)目代碼過(guò)程中發(fā)現(xiàn)一個(gè)千萬(wàn)級(jí)數(shù)據(jù)深分頁(yè)問(wèn)題,覺(jué)著有必要給大家總結(jié)整理下,這篇文章主要給大家介紹了關(guān)于解決MySQL深分頁(yè)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • MySQL外鍵使用詳解

    MySQL外鍵使用詳解

    兩天有人問(wèn)mysql中如何加外鍵,今天抽時(shí)間總結(jié)一下。mysql中MyISAM和InnoDB存儲(chǔ)引擎都支持外鍵(foreign key),但是MyISAM只能支持語(yǔ)法,卻不能實(shí)際使用。
    2015-03-03

最新評(píng)論