mysql------數(shù)據(jù)庫(kù)及服務(wù)器優(yōu)化
數(shù)據(jù)庫(kù)優(yōu)化 4-1 優(yōu)化表的類型
在mysql中,可以使用函數(shù)PROCEDUREANALYSE()對(duì)當(dāng)前應(yīng)用的表進(jìn)行分析,
4-2 通過(guò)拆分提高表的訪問(wèn)效率
1.分庫(kù)分表
2.分區(qū)
主要目的:
1.減少表的記錄數(shù)
2.減小對(duì)操作系統(tǒng)的負(fù)擔(dān)壓力
4-3 使用中間表提高統(tǒng)計(jì)查詢速度
中間表的產(chǎn)生:
1.view視圖
2.重新生成一個(gè)新表
mysql服務(wù)器優(yōu)化 5.1 myisam讀鎖定
1.lock table t1 read
2.開(kāi)啟另一個(gè)mysql連接終端,接著去嘗試:select * from t1
3.再insert、update和delete t1這張表,你會(huì)發(fā)現(xiàn)所有的數(shù)據(jù)都停留在終端上沒(méi)有真正的去操作
4.讀鎖定對(duì)我們?cè)谧鰝浞荽罅繑?shù)據(jù)時(shí)非常有用。
mysqldump -uroot -p123 test >test.sql
5.2 myisam寫(xiě)鎖定
1.lock table t1 write
2.打開(kāi)另一個(gè)mysql終端,嘗試去select、insert、update和delete這張表t1,你會(huì)發(fā)現(xiàn)都不能操作,都會(huì)停留在終端上,只有等第一個(gè)終端操作完畢,第二個(gè)終端才能真正執(zhí)行。
3.可見(jiàn)表的寫(xiě)鎖定比讀鎖定更嚴(yán)格
4.一般情況下我們很少去顯示的去對(duì)表進(jìn)行read和write鎖定的,myisam會(huì)自動(dòng)進(jìn)行鎖定的
6. 1 四種字符集問(wèn)題
[client] #password?=?your_password port?=?3306 socket?=?/var/lib/mysql/mysql.sock defautl-character-set?=?utf-8 [mysqsld] port?=?3306 socket?=?/var/lib/mysql/mysql.sock character-set-server?=?utf-8 collation-server?=?utf8_general_ci
6. 2 binary log 日志問(wèn)題
1.log-bin=mysql-bin
查看bin-log日志:
mysql>show binary logs;
6. 3 slow log 慢查詢?nèi)罩締?wèn)題
1.有關(guān)慢查詢
開(kāi)戶和設(shè)置慢查詢時(shí)間:
vi?/etc/my.cnf log_slow_queries=slow.log long_query_time=5
慢查詢次數(shù):
mysql>show global status like “%quer%”;
6. 4 socket 問(wèn)題
[client] port?=?3306 socket?=?/tmp/mysql.sock [mysqld] port?=?3306 socket?=?/tmp/mysql.sock skip-locking
mysql socket無(wú)法登陸
1.有時(shí)登陸mysql時(shí)提示不能用socket登陸,此時(shí)可以換成tcp方式去登陸,但是可以測(cè)試時(shí)可以這樣用,但是必須要在PHP去用之前把這個(gè)事情解決了。
這樣就可以登陸,這樣就不用mysql.sock來(lái)登陸,而mysql.sock是啟動(dòng)mysqld服務(wù)時(shí)產(chǎn)生的
6. 5 root 密碼丟失
root密碼丟失破解
service?mysqld?stop mysqld_safe?--skip-grant-tables?--user=mysql&?//跳過(guò)授權(quán)表mysql.user和mysql.db這些表 mysql?-uroot set?password=password("wei");?//用這一條語(yǔ)句結(jié)果報(bào)錯(cuò),就是因?yàn)榧恿?-skip-grant-tables mysql>update?user?set?password=password("wei")?where?user="root"?and?host="localhost"; mysql>set?password?for?root@localhost=password("wei"); mysql>set?password=password("wei");?//和第五步一樣,都可能成功修改密碼