Mysql資料優化

2021-10-02 08:24:48 字數 3810 閱讀 3875

1.linux上安裝mysql

虛擬機器上裝linux系統,啟動,ifconfig檢視當前linux,ip位址。通過遠端工具securecrtportable:遠端命令列進行連線

登入linux檢視當前mysql安裝包版本 rpm -qa | grep -i mysql

解除安裝 rpm -e mysql-libs-5.1.71.e16.x86_64 --nodeps

②上傳e盤下的mysql安裝包  alt + p -----> put e:/test/mysql-5.5.22.tar

③建立mysql資料夾,mkdir mysql

tar -xvf mysql-5.6.22.tar -c /mysql  解壓到同目錄的mysql目錄

cd mysql,ll,檢視mysql目錄下檔案

④安裝依賴包,yum update...時,is this ok [y/n]:,需要按y,enter

⑤安裝mysql客戶端 rpm -ivh mysql-client...

安裝mysql服務端 rpm -ivh mysql-server...

service mysql status  檢視mysql是否啟動

service mysql start  啟動mysql

service mysql stop  停止mysql

mysql -u root -p

需要輸入密碼(在mysql-server端安裝的時候,有生成隨機密碼(命令列往上翻))

通過遠端工具securecrtportable,轉殖乙個會話,cat /root/.mysql_secret  檢視這個檔案內容的密碼

輸入密碼連線後設定密碼:set password = password('root');  ,root為密碼,ctrl+c退出,用新密碼重新登入試試

此時本地電腦無法連線mysql,授權遠端連線,mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';  root為密碼

使授權生效:mysql> flush privileges;

試試能不能登入,還不能登入,linux防火牆導致的

檢視防火牆狀態:service iptables status    (is not running就是關閉)

關閉防火牆:service iptables stop

二、索引

1.索引結構

btree索引:最常見的索引型別,大部分索引都支援b樹索引

hash索引,r-tree索引,full-text

2.5 索引語法

檢視有幾個表:show tables;

給city_name建立索引:creat index idx_city_name on city(city_name);   idx_city_name索引名稱

檢視索引:show index from city\g;     key_name索引名稱,index_type索引型別

刪除索引:drop index idx_city_name on city;

建立唯一索引:alter table city add unique idx_city_name(city_name)  給city表的city_name欄位建立唯一索引,non_unique為0,即是唯一索引

2.6 索引設計原則

查詢頻次高,且資料量比較大的表建立索引

索引欄位的選擇,最佳候選列應當從where子句的條件中提取,如果where子句中的組合較多,應當挑選最常用,過濾效果最好的列的組合

使用唯一索引,區分度越高,使用索引的效率越高

使用短欄位索引

索引不是越多越好

linux命令:

cat /root/.mysql_secret 檢視這個檔案內容

shift+insert 黏貼

mysql資料庫優化實踐。

一、資料表結構優化

1.三正規化

a.原子性(不可拆分)

b.唯一性(不能有完全相同資料)

c.無冗餘性(不能有多餘的資料)

2.欄位 字段型別

設計表時,字段選擇優先順序 數字》時間》字串

字段大小設定夠用就好,例如密碼 char(32)和 char(255) 年齡 tinyint(3)和 int(10),選前者

也可以借助命令來修改表的結構。

select * from 表名 procedure analyse() \g

3.表拆分 使用者表和詳情表

4.反三正規化

表結構中,通過管理一些冗餘字段,可以提高表的讀取速度。例如增加訂單**,分類商品統計,粉絲數量這些字段。

二、mysql鎖

三、索引新增和刪除

四、慢查詢

定位執行較慢的語句,啟動mysql服務並設定引數

可以借助mysql內建命令來檢視日誌:mysqldumpslow /tmp/slow_query.log

五、分析語句是否有索引,explain 命令使用和搜尋 型別介紹

explain select * from 表名 where description like "愛" \g

possible_keys 可能用到的索引

key 實際用到的索引

六、sql常見優化

1> 不要使用select *

2> 加索引的話,在where欄位上加索引(如where title like..)給title加索引

3> 模糊查詢 % 前置不能使用索引,例如  like 『%三』

4> 使用or語句要注意,兩側的語句都有索引才會使用索引

5> 分組查詢(group_by)分組優化,對於分組的資料 mysql會自動對資料進行排序,所以可以強制其不排序(order by null),提高速度。

6 > 分頁優化

select id,title from table where id>9000 order by title limit 10;

七、1. 表分割優化

水平分割:按時間拆,17年一張表,18年一張表;使用者id取餘拆分

垂直分割。取出部分字段放到另乙個表(主表和詳情表)

2.mysql主從複製,主伺服器負責更新資料,從伺服器負責查詢

3.mysql中文分詞

八、mysql其他技巧

1.插入資料時,不要迴圈插入 。 (一起一次插入。)

2.不要將存入資料庫,用路徑代替。(把上傳到磁碟的某個位置,路徑存入資料庫)

3.偽刪除,不真實的刪除資料,增加乙個欄位來標識

4.analyze table 優化語句的執行計畫,提高查詢效率。(有時看的時候有索引,分析完後沒索引。分析表,優化改進)

5.定期執行optimize table整理碎片。主要針對mysome表

6.盡量避免使用null,會增加額外的位元組標註,可以使用預設值

7.快取

mysql優化資料

全表掃瞄是資料庫搜尋表的每一條記錄的過程,直到所有符合給定條件的記錄返回為止。通常在資料庫中,對無索引的表進行查詢一般稱為全表掃瞄 然而有時候我們即便新增了索引,但當我們的sql語句寫的不合理的時候也會造成全表掃瞄。以下是經常會造成全表掃瞄的sql語句及應對措施 1.使用null做為判斷條件 如 s...

MySql資料優化

更小的通常越好 更小的資料型別占用更小的磁碟空間,記憶體和cpu快取,並且處理時需要的cpu週期也更少 注意不能低估需要儲存的值的範圍 簡單就好 簡單資料型別的操作通常需要更少的cpu週期如整型比字元操作代價更低 使用mysql內建的型別而不是字串來儲存日期和時間 應該用整型儲存ip位址 避免nul...

Mysql海量資料優化

1.選擇合適的儲存引擎 兩個儲存引擎 myisam 和 innodb myisam合適count 但寫效能不好 innodb合適併發讀寫 事物 2.優化字段資料 3.為字段建立索引 4.避免使用select 5.使用 enum 而不是 varchar 6.盡可能的使用 not null 7.固定長度...