mysql資料庫優化

2021-09-01 17:52:10 字數 2057 閱讀 5063

在做資料庫優化的時候,很多小白都可能會說懵...

我們選擇lamp環境的mysql來舉例

首先定位慢語句

a.修改mysql配置檔案

重啟mysql:

關閉:mysqldump -u root -p shutdown

mysql啟動:mysqld_safe -u mysql &

檢視/tmp/mysql-slow.log

vim/tmp/mysql-slow.log

增刪改優化:

1.windows開啟任務管理器 ctrl+alt+delete

2.linux top命令

3.如果cpu使用率或者記憶體佔用率大的話,及時釋放記憶體,

b。檢視表的內容是不是太大:select count(*) from test   如果太大,可以考慮使用快取

c。檢查表的索引是不是很多:desc 表名 如果表索引很多,及時減少索引,因為索引的建立也會消耗資源的開銷

d。mysql 主從伺服器 讀寫分離

查詢優化:

a.快取優化 :

原則:資料讀的多寫的少的,類似於微博等,先讀快取,快取沒有的話,那麼就讀資料庫,然後取出資料後放入快取,同時返回響應,可以使用redis或者memcache。

索引的優化:

索引的定義:索引就類似於字典目錄可以快速訪問資料表中的特定資訊

索引型別:

a.主鍵索引:它是一種特殊的唯一索引,不允許空值

b.唯一索引:與普通索引類似,不同的是:索引列的值必須唯一,但允許有空值

c.普通索引:最基本的索引,沒有任何限制

索引的建立:

命令建立:

<1 主鍵索引:

鍵表時:create table test(id int primary key auto_increment,name char(30));

建表後:alert table test add primary key id

《2 唯一索引:

建表時:create table test(id int primary key auto_increment,name char(30), unique name(name))

建表後:alert table test add unique name(name)

3>.普通索引

建表時:create table test(id int primary key  auto_increment, name char(30),index name(name))

建表後;alert table test add index name(name)

索引刪除

主鍵索引:alert table test modify id int(10) 或 alert table test droup primary key 

非主鍵索引:alert table test drop 表名

索引的弊端:

索引並非是絕對的好,索引的建立也是有資源開銷的,比如磁碟空間的占用,並且索引還會影響增刪改語句的執行效率

explain語句分析:

示例「」explain select * from  user\g

根據返回引數來判定是否需要加索引

《1 row 查詢次數

《2 type 連線型別

全表掃瞄

explain select * from test   

查詢時一定不能出現all型別 全表掃瞄,速度是最慢的,如果在乙個資料很多的資料表裡分析sql語句的時候,返回型別出現index或者all ,那個時候必須加索引

3》key 搜素使用的索引

其它的優化小技巧:

1.盡量使用一條語句插入,避免迴圈插入

2.不要將存入到資料庫中,用路勁代替

3.分組時新增group by id order by null 及時釋放資源

4.盡量避免 * ,效率較低

5/使用or語句要注意,兩側的語句都有索引才能使用索引

6.針對myisam的表要定期執行命令 optimize table test 合併表空間碎片

mysql資料庫優化索引 mysql資料庫索引調優

一 mysql索引 1 磁碟檔案結構 innodb引擎 frm格式檔案儲存表結構,ibd格式檔案儲存索引和資料。myisam引擎 frm格式檔案儲存表結構,myi格式檔案儲存索引,myd格式檔案儲存資料 2 mysql資料庫資料範問原理 innodb btree 1 ibd檔案中主鍵構建b tree...

mysql資料庫優先 MySQL資料庫優化

1.新增索引 mysql資料庫的四類索引 index 普通索引,資料可以重複,沒有任何限制。unique 唯一索引,要求索引列的值必須唯一,但允許有空值 如果是組合索引,那麼列值的組合必須唯一。primary key 主鍵索引,是一種特殊的唯一索引,乙個表只能有乙個主鍵,不允許有空值,一般是在建立表...

mysql資料庫優化

用到啥學啥,mysql資料庫優化成了這幾天的老大難問題。瘋狂的尋找mysql優化的資料,覺得有用的不少,記錄下跟大家分享,對了,這裡僅僅是mysql資料庫本身的優化,沒有寫磁碟之類的 開始之前,介紹倆mysql的命令 show global status 檢視執行狀態的,顯示執行各種狀態值 show...