mysql------數(shù)據(jù)庫及服務(wù)器優(yōu)化
數(shù)據(jù)庫優(yōu)化 4-1 優(yōu)化表的類型
在mysql中,可以使用函數(shù)PROCEDUREANALYSE()對當(dāng)前應(yīng)用的表進(jìn)行分析,
4-2 通過拆分提高表的訪問效率
1.分庫分表
2.分區(qū)
主要目的:
1.減少表的記錄數(shù)
2.減小對操作系統(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.開啟另一個(gè)mysql連接終端,接著去嘗試:select * from t1
3.再insert、update和delete t1這張表,你會(huì)發(fā)現(xiàn)所有的數(shù)據(jù)都停留在終端上沒有真正的去操作
4.讀鎖定對我們在做備份大量數(shù)據(jù)時(shí)非常有用。
mysqldump -uroot -p123 test >test.sql
5.2 myisam寫鎖定
1.lock table t1 write
2.打開另一個(gè)mysql終端,嘗試去select、insert、update和delete這張表t1,你會(huì)發(fā)現(xiàn)都不能操作,都會(huì)停留在終端上,只有等第一個(gè)終端操作完畢,第二個(gè)終端才能真正執(zhí)行。
3.可見表的寫鎖定比讀鎖定更嚴(yán)格
4.一般情況下我們很少去顯示的去對表進(jìn)行read和write鎖定的,myisam會(huì)自動(dòng)進(jìn)行鎖定的
6. 1 四種字符集問題
[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 日志問題
1.log-bin=mysql-bin
查看bin-log日志:
mysql>show binary logs;
6. 3 slow log 慢查詢?nèi)罩締栴}
1.有關(guān)慢查詢
開戶和設(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 問題
[client] port?=?3306 socket?=?/tmp/mysql.sock [mysqld] port?=?3306 socket?=?/tmp/mysql.sock skip-locking
mysql socket無法登陸
1.有時(shí)登陸mysql時(shí)提示不能用socket登陸,此時(shí)可以換成tcp方式去登陸,但是可以測試時(shí)可以這樣用,但是必須要在PHP去用之前把這個(gè)事情解決了。
這樣就可以登陸,這樣就不用mysql.sock來登陸,而mysql.sock是啟動(dòng)mysqld服務(wù)時(shí)產(chǎn)生的
6. 5 root 密碼丟失
root密碼丟失破解
service?mysqld?stop mysqld_safe?--skip-grant-tables?--user=mysql&?//跳過授權(quán)表mysql.user和mysql.db這些表 mysql?-uroot set?password=password("wei");?//用這一條語句結(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");?//和第五步一樣,都可能成功修改密碼