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.固定長度...