国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySql優(yōu)化經(jīng)驗(yàn)分享

這篇具有很好參考價(jià)值的文章主要介紹了MySql優(yōu)化經(jīng)驗(yàn)分享。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一條sql的具體執(zhí)行過(guò)程

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

連接

我們?cè)趺床榭碝ySQL當(dāng)前有多少個(gè)連接?

可以用show status命令,模糊匹配Thread,

Show global status like "Thread%"

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

show global variables like 'wait timeout';—非交互式超時(shí)時(shí)間,如JDBC程序

show global variables like 'interactive timeout';"交互式超時(shí)時(shí)間,如數(shù)據(jù)庫(kù)工具默認(rèn)都是28800秒,8小時(shí)。

既然連接消耗資源,MySQL服務(wù)允許的最大連接數(shù)(也就是并發(fā)數(shù))默認(rèn)是多少呢?在5.7版本中默認(rèn)是151個(gè),最大可以設(shè)置成100000

MySQL中的參數(shù)(變量)分為session和global級(jí)別,分別是在當(dāng)前會(huì)話中生效和 全局生效,但是并不是每個(gè)參數(shù)都有兩個(gè)級(jí)別,比如max_connections就只有全局級(jí)別。當(dāng)沒(méi)有帶參數(shù)的時(shí)候,默認(rèn)是session級(jí)別,包括查詢(xún)和修改。比如修改了一個(gè)參數(shù)以后,在本窗口査詢(xún)已經(jīng)生效,但是其他窗口不生效:所以,如果只是臨時(shí)修改,建議修改session級(jí)別。如果需要在其他會(huì)話中生效,必須顯式地加上global參數(shù)。

緩存

緩存沒(méi)有生效,為什么?MySQL的緩存默認(rèn)是關(guān)閉的。show variables like? “query_cache%”!;

主要是因?yàn)镸ySQL自帶的緩存的應(yīng)用場(chǎng)景有限,第一個(gè)是它要求SQL語(yǔ)句必須一 模一樣,中間多一個(gè)空格,字母大小寫(xiě)不同都被認(rèn)為是不同的的SQL。第二個(gè)是表里面任何一條數(shù)據(jù)發(fā)生變化的時(shí)候,這張表所有緩存都會(huì)失效,所以對(duì) 于有大量數(shù)據(jù)更新的應(yīng)用,也不適合。

詞法解析與語(yǔ)法解析

詞法分析

就是把一個(gè)完整的SQL語(yǔ)句打碎成一個(gè)個(gè)的單詞。

select name from user where id = 1;

它會(huì)打碎成8個(gè)符號(hào),每個(gè)符號(hào)是什么類(lèi)型,從哪里開(kāi)始到哪里結(jié)束。

語(yǔ)法分析 ?

語(yǔ)法分析會(huì)對(duì)SQL做一些語(yǔ)法檢查,比如單引號(hào)有沒(méi)有閉合,然后根據(jù)MySQL定義的語(yǔ)法規(guī)則,根據(jù)SQL語(yǔ)句生成一個(gè)數(shù)據(jù)結(jié)構(gòu)。這個(gè)數(shù)據(jù)結(jié)構(gòu)我 們把它叫做解析樹(shù)

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

預(yù)處理器

實(shí)際上還是在解析的時(shí)候報(bào)錯(cuò),解析SQL的環(huán)節(jié)里面有個(gè)預(yù)處理器。它會(huì)檢査生成的解析樹(shù),解決解析器無(wú)法解析的語(yǔ)義。

它會(huì)檢査表和列名是否存在,檢査名字和別名,保證沒(méi)有歧義。預(yù)處理之后得到一個(gè)新的解析樹(shù)。

査詢(xún)優(yōu)化器


査詢(xún)優(yōu)化器的模塊(Optimizer)。

査詢(xún)優(yōu)化器的目的就是根據(jù)解析樹(shù)生成不同的執(zhí)行計(jì)劃(Execution Plan),然后選擇一種最優(yōu)的執(zhí)行計(jì)劃,MySQL里面使用的是基于開(kāi)銷(xiāo)(cost)的優(yōu)化器,那種執(zhí)行計(jì)劃開(kāi)銷(xiāo)最小,就用哪種??梢允褂眠@個(gè)命令査看査詢(xún)的開(kāi)銷(xiāo):

show status like 'Last_query_cost';

error 1040: Too many connections的錯(cuò)誤。這個(gè)是超

過(guò)了服務(wù)端設(shè)置的最大并發(fā)連接數(shù)。

優(yōu)化的思路

1、從服務(wù)端來(lái)說(shuō),我們可以增加服務(wù)端的可用連接數(shù)。

如果有多個(gè)應(yīng)用或者很多請(qǐng)求同時(shí)訪問(wèn)數(shù)據(jù)庫(kù),連接數(shù)不夠的時(shí)候,我們可以:

(1)增加可用連接數(shù),修改max connections的大小:

show variables like max_connections;?? ??修改最大連接數(shù),當(dāng)有多個(gè)應(yīng)用連接的時(shí)候

(2)或者,或者及時(shí)釋放不活動(dòng)的連接。交互式和非交互式的客戶端的默認(rèn)超時(shí)時(shí)

間都是28800秒,8小時(shí),我們可以把這個(gè)值調(diào)小。

show global variables like ‘wait_timeout’

引入連接池,實(shí)現(xiàn)對(duì)連接重用

2? ?緩存層面

使用緩存 redis?

集群

主從復(fù)制

(1)master服務(wù)器將數(shù)據(jù)的改變記錄二進(jìn)制binlog日志,當(dāng)master上的數(shù)據(jù)發(fā)生改變時(shí),則將其改變寫(xiě)入二進(jìn)制日志中;????????????

?????????????? (2)slave服務(wù)器會(huì)在一定時(shí)間間隔內(nèi)對(duì)master二進(jìn)制日志進(jìn)行探測(cè)其是否發(fā)生改變,如果發(fā)生改變,則開(kāi)始一個(gè)I/OThread請(qǐng)求master二進(jìn)制事件

?????????????? (3)同時(shí)主節(jié)點(diǎn)為每個(gè)I/O線程啟動(dòng)一個(gè)dump線程,用于向其發(fā)送二進(jìn)制事件,并保存至從節(jié)點(diǎn)本地的中繼日志中,從節(jié)點(diǎn)將啟動(dòng)SQL線程從中繼日志中讀取二進(jìn)制日志,在本地重放,使得其數(shù)據(jù)和主節(jié)點(diǎn)的保持一致,最后I/OThread和SQLThread將進(jìn)入睡眠狀態(tài),等待下一次被喚醒。

也就是說(shuō):

- 從庫(kù)會(huì)生成兩個(gè)線程,一個(gè)I/O線程,一個(gè)SQL線程;

- I/O線程會(huì)去請(qǐng)求主庫(kù)的binlog,并將得到的binlog寫(xiě)到本地的relay-log(中繼日志)文件中;

- 主庫(kù)會(huì)生成一個(gè)log dump線程,用來(lái)給從庫(kù)I/O線程傳binlog;

- SQL線程,會(huì)讀取relay log文件中的日志,并解析成sql語(yǔ)句逐一執(zhí)行;

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

修改配置

修改配置的工作一般由專(zhuān)業(yè)的DBA完成。也有一些工具可以給出

推薦值。

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

慢日志查詢(xún)

1 打開(kāi)慢日志開(kāi)關(guān)

因?yàn)殚_(kāi)啟慢查詢(xún)?nèi)罩臼怯写鷥r(jià)的(跟binlog—樣),所以它默認(rèn)

是關(guān)閉的:

show variables like ‘slow_query’

除了這個(gè)開(kāi)關(guān),還有一個(gè)參數(shù),控制執(zhí)行超過(guò)多長(zhǎng)時(shí)間的SQL才記錄到慢日志,默

認(rèn)是10秒。如果改成0秒的話就是記錄所有的SQL。

show variables like ‘%long_query%’;

set @@global.slow_query_log=l;?.1開(kāi)啟,0關(guān)閉,重啟后失效

set @@global.long_query_time=3;-默認(rèn)10秒,另開(kāi)一個(gè)窗口后才會(huì)查到最新值 show variables like ,%long_queiy%1; show variables like '%slow_query%‘;

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

修改配置文件my.cnfo

以下配置定義了慢査詢(xún)?nèi)罩镜拈_(kāi)關(guān)、慢査詢(xún)的時(shí)間、日志文件的存放路徑。

slowquerylog = ON long_qu eiy_time=2 slowqueiylogfile =/var/lib/mysql/localhost-slow.log

模擬慢査詢(xún):

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

慢日志分析 1、日志內(nèi)容

less /var/lib/mysql/localhost-slow.log

MySQL提供了 mysqldumpslow的工具,在MySQL的bin目錄下。

Mysqldumpslow – help

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)

show engine存儲(chǔ)引擎運(yùn)行信息

show engine用來(lái)顯示存儲(chǔ)引擎的當(dāng)前運(yùn)行信息,包括事務(wù)持有的表鎖、行鎖信息;

事務(wù)的鎖等待情況;線程信號(hào)量等待;文件IO請(qǐng)求;buffer pool統(tǒng)計(jì)信息。

MySql優(yōu)化經(jīng)驗(yàn)分享,mysql,經(jīng)驗(yàn)分享,數(shù)據(jù)庫(kù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-744027.html

到了這里,關(guān)于MySql優(yōu)化經(jīng)驗(yàn)分享的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)性能優(yōu)化技巧介紹

    MySQL數(shù)據(jù)庫(kù)性能優(yōu)化技巧介紹

    MySQL是目前最流行和廣泛使用的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)之一,隨著數(shù)據(jù)量的增長(zhǎng)和訪問(wèn)負(fù)載的提高,優(yōu)化數(shù)據(jù)庫(kù)性能變得至關(guān)重要,以確保系統(tǒng)能夠高效地處理大量的并發(fā)請(qǐng)求。本文將記錄一些MySQL數(shù)據(jù)庫(kù)性能優(yōu)化的技巧,提高數(shù)據(jù)庫(kù)的運(yùn)行效率,提升系統(tǒng)性能。 對(duì)于MySQL,最簡(jiǎn)單

    2024年02月08日
    瀏覽(51)
  • 【MySQL 數(shù)據(jù)庫(kù)】7、SQL 優(yōu)化

    【MySQL 數(shù)據(jù)庫(kù)】7、SQL 優(yōu)化

    ① 批量插入數(shù)據(jù) ② 手動(dòng)控制事務(wù) ③ 主鍵順序插入,性能要高于亂序插入 主鍵亂序插入 : 8 1 9 21 88 2 4 15 89 5 7 3 主鍵順序插入 : 1 2 3 4 5 7 8 9 15 21 88 89 【☆】 】 ① 如果需要一次性插入大批量數(shù)據(jù)(百萬(wàn)級(jí)別),使用 insert 語(yǔ)句插入性能 很低 ② 可使用 MySQL 數(shù)據(jù)庫(kù)提供的 loa

    2024年02月08日
    瀏覽(33)
  • MYSQL數(shù)據(jù)庫(kù)故障排除與優(yōu)化

    目錄 MySQL 單實(shí)例故障排查 MySQL 主從故障排查 MySQL 優(yōu)化 故障現(xiàn)象 1 ERROR?? ?2002?? ?(HY000):?? ?Can\\\'t?? ?connect?? ?to?? ?local?? ?MySQL?? ?server?? ?through?? ?socket \\\'/data/mysql/mysql.sock\\\' (2) 問(wèn)題分析:以上這種情況一般都是數(shù)據(jù)庫(kù)未啟動(dòng)或者數(shù)據(jù)庫(kù)端口被防火墻攔截導(dǎo)致。 解

    2024年04月11日
    瀏覽(23)
  • MySQL數(shù)據(jù)庫(kù)的優(yōu)化技術(shù)二

    MySQL數(shù)據(jù)庫(kù)的優(yōu)化技術(shù)二

    縱論 對(duì)mysql優(yōu)化時(shí)一個(gè)綜合性的技術(shù),主要包括? 表的設(shè)計(jì)合理化(符合3NF) 添加適當(dāng)索引(index)? [ 四種: 普通索引、主鍵索引、唯一索引unique、全文索引 ] 分表技術(shù)( 水平分割、垂直分割 ) 水平分割根據(jù)一個(gè)標(biāo)準(zhǔn)重復(fù)定義幾個(gè)字段值相同,表名稱(chēng)不同的表,表的結(jié)構(gòu)相同 讀(

    2024年02月11日
    瀏覽(17)
  • MySQL數(shù)據(jù)庫(kù)——MySQL優(yōu)化服務(wù)器,提高M(jìn)ySQL的運(yùn)行速度!

    MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),優(yōu)化MySQL服務(wù)器可以顯著提高數(shù)據(jù)庫(kù)的性能和運(yùn)行速度。在下面的回答中,我將介紹一些常見(jiàn)的MySQL優(yōu)化策略和技術(shù),以幫助提高M(jìn)ySQL服務(wù)器的性能。 1、優(yōu)化數(shù)據(jù)庫(kù)設(shè)計(jì): 正確設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),使用適當(dāng)?shù)臄?shù)據(jù)類(lèi)型、索引和約束

    2024年02月07日
    瀏覽(37)
  • 數(shù)據(jù)庫(kù)——MySQL高性能優(yōu)化規(guī)范

    所有數(shù)據(jù)庫(kù)對(duì)象名稱(chēng)必須使用小寫(xiě)字母并用下劃線分割 所有數(shù)據(jù)庫(kù)對(duì)象名稱(chēng)禁止使用 MySQL 保留(如果表名中包含查詢(xún)時(shí),需要將其用單引號(hào)括起來(lái)) 數(shù)據(jù)庫(kù)對(duì)象的命名要能做到見(jiàn)名識(shí)意,并且最后不要超過(guò) 32 個(gè)字符 臨時(shí)庫(kù)表必須以 tmp_為前綴并以日期為后綴,

    2024年02月11日
    瀏覽(50)
  • MySQL數(shù)據(jù)庫(kù)進(jìn)行性能優(yōu)化的思路

    對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行性能優(yōu)化的思路可以涵蓋以下方面: 索引優(yōu)化: 索引是提高查詢(xún)性能的關(guān)鍵。確保表中的關(guān)鍵列和經(jīng)常用于查詢(xún)條件的列都被適當(dāng)?shù)貏?chuàng)建了索引??梢允褂?CREATE INDEX 語(yǔ)句添加索引,或者使用 ALTER TABLE 語(yǔ)句在已有表上添加索引。例如,對(duì)于一個(gè)用戶表中的

    2024年02月06日
    瀏覽(25)
  • Django操作MySQL數(shù)據(jù)庫(kù)的優(yōu)化方法

    Django 是一個(gè)很流行的 Web 框架,而 MySQL 是常用的關(guān)系型數(shù)據(jù)庫(kù)之一。在使用 Django 開(kāi)發(fā) Web 應(yīng)用時(shí),我們經(jīng)常需要使用 MySQL 存儲(chǔ)數(shù)據(jù),因此如何加速 MySQL 是我們需要關(guān)注的問(wèn)題。本文將介紹一些方法來(lái)優(yōu)化 Django 中 MySQL 的性能。 使用適當(dāng)?shù)乃饕?索引是 MySQL 中提高查詢(xún)性能的

    2024年02月10日
    瀏覽(35)
  • MySQL——性能優(yōu)化與關(guān)系型數(shù)據(jù)庫(kù)

    MySQL——性能優(yōu)化與關(guān)系型數(shù)據(jù)庫(kù)

    吞吐與延遲:有些結(jié)論是反直覺(jué)的,指導(dǎo)我們關(guān)注什么。 沒(méi)有量化就沒(méi)有改進(jìn):監(jiān)控與度量指標(biāo),指導(dǎo)我們?cè)趺慈ト胧帧?80/20原則:先優(yōu)化性能瓶頸問(wèn)題,指導(dǎo)我們?nèi)绾稳?yōu)化。 過(guò)早的優(yōu)化是萬(wàn)惡之源:指導(dǎo)我們要選擇優(yōu)化的時(shí)機(jī)。 脫離場(chǎng)景談性能都是耍流氓:指導(dǎo)我們對(duì)

    2024年02月01日
    瀏覽(39)
  • MySQL數(shù)據(jù)庫(kù)內(nèi)存配置與性能優(yōu)化:合理分配內(nèi)存,提升數(shù)據(jù)庫(kù)性能

    MySQL數(shù)據(jù)庫(kù)內(nèi)存配置與性能優(yōu)化:合理分配內(nèi)存,提升數(shù)據(jù)庫(kù)性能

    ???????? 引言 :MySQL是廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),而合理配置數(shù)據(jù)庫(kù)的內(nèi)存是保障其高性能運(yùn)行的關(guān)鍵之一.本文將介紹如何根據(jù)MySQL數(shù)據(jù)庫(kù)內(nèi)存值大小來(lái)定義,以及這樣配置如何影響數(shù)據(jù)庫(kù)的性能 ? 內(nèi)存配置的基本原則 : innodb_buffer_pool_size :該參數(shù)定義了InnoDB存儲(chǔ)引擎

    2024年02月22日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包