国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

10個(gè)MySQL性能調(diào)優(yōu)的方法

2024-07-24 12:45:45
字體:
供稿:網(wǎng)友

MYSQL 應(yīng)該是最流行了 WEB 后端數(shù)據(jù)庫。WEB 開發(fā)語言最近發(fā)展很快,PHP, Ruby, Python, Java 各有特點(diǎn),雖然 NOSQL 最近越來越多的被提到,但是相信大部分架構(gòu)師還是會(huì)選擇 MYSQL 來做數(shù)據(jù)存儲(chǔ)。

MYSQL 如此方便和穩(wěn)定,以至于我們?cè)陂_發(fā) WEB 程序的時(shí)候很少想到它。即使想到優(yōu)化也是程序級(jí)別的,比如,不要寫過于消耗資源的 SQL 語句。但是除此之外,在整個(gè)系統(tǒng)上仍然有很多可以優(yōu)化的地方。

1. 選擇合適的存儲(chǔ)引擎: InnoDB

除非你的數(shù)據(jù)表使用來做只讀或者全文檢索 (相信現(xiàn)在提到全文檢索,沒人會(huì)用 MYSQL 了),你應(yīng)該默認(rèn)選擇 InnoDB 。

你自己在測(cè)試的時(shí)候可能會(huì)發(fā)現(xiàn) MyISAM 比 InnoDB 速度快,這是因?yàn)椋?MyISAM 只緩存索引,而 InnoDB 緩存數(shù)據(jù)和索引,MyISAM 不支持事務(wù)。但是 如果你使用 innodb_flush_log_at_trx_commit = 2 可以獲得接近的讀取性能 (相差百倍) 。

1.1 如何將現(xiàn)有的 MyISAM 數(shù)據(jù)庫轉(zhuǎn)換為 InnoDB:

復(fù)制代碼 代碼如下:
mysql -u [USER_NAME] -p -e "SHOW TABLES IN [DATABASE_NAME];" | tail -n +2 | xargs -I '{}' echo "ALTER TABLE {} ENGINE=InnoDB;" > alter_table.sql
perl -p -i -e 's/(search_[a-z_]+ ENGINE=)InnoDB//1MyISAM/g' alter_table.sql
mysql -u [USER_NAME] -p [DATABASE_NAME] < alter_table.sql

1.2 為每個(gè)表分別創(chuàng)建 InnoDB FILE:

復(fù)制代碼 代碼如下:
innodb_file_per_table=1

這樣可以保證 ibdata1 文件不會(huì)過大,失去控制。尤其是在執(zhí)行 mysqlcheck -o –all-databases 的時(shí)候。

 

2. 保證從內(nèi)存中讀取數(shù)據(jù),講數(shù)據(jù)保存在內(nèi)存中

2.1 足夠大的 innodb_buffer_pool_size

推薦將數(shù)據(jù)完全保存在 innodb_buffer_pool_size ,即按存儲(chǔ)量規(guī)劃 innodb_buffer_pool_size 的容量。這樣你可以完全從內(nèi)存中讀取數(shù)據(jù),最大限度減少磁盤操作。

2.1.1 如何確定 innodb_buffer_pool_size 足夠大,數(shù)據(jù)是從內(nèi)存讀取而不是硬盤?
方法 1

mysql> SHOW GLOBAL STATUS LIKE 'innodb_buffer_pool_pages_%';+----------------------------------+--------+| Variable_name | Value |+----------------------------------+--------+| Innodb_buffer_pool_pages_data | 129037 || Innodb_buffer_pool_pages_dirty | 362 || Innodb_buffer_pool_pages_flushed | 9998 || Innodb_buffer_pool_pages_free | 0 | !!!!!!!!| Innodb_buffer_pool_pages_misc | 2035 || Innodb_buffer_pool_pages_total | 131072 |+----------------------------------+--------+6 rows in set (0.00 sec)

發(fā)現(xiàn) Innodb_buffer_pool_pages_free 為 0,則說明 buffer pool 已經(jīng)被用光,需要增大 innodb_buffer_pool_size

InnoDB 的其他幾個(gè)參數(shù):

復(fù)制代碼 代碼如下:
innodb_additional_mem_pool_size = 1/200 of buffer_pool
innodb_max_dirty_pages_pct 80%
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝应县| 山东省| 芦山县| 监利县| 博爱县| 陈巴尔虎旗| 天全县| 保亭| 全椒县| 平度市| 丰镇市| 沙坪坝区| 三原县| 洪洞县| 濮阳市| 望奎县| 清河县| 白朗县| 广元市| 济宁市| 海兴县| 高雄市| 洛扎县| 广宗县| 卓尼县| 南川市| 读书| 界首市| 彭泽县| 乌什县| 兴国县| 张家川| 辽宁省| 陆川县| 墨脱县| 清新县| 五家渠市| 山东| 苏尼特左旗| 于田县| 河北区|