在做資料庫優化的時候,很多小白都可能會說懵...
我們選擇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...