mysql------数据库及服务器优化
扫描二维码
随时随地手机看文章
数据库优化 4-1 优化表的类型
在mysql中,可以使用函数PROCEDUREANALYSE()对当前应用的表进行分析,
4-2 通过拆分提高表的访问效率
1.分库分表
2.分区
主要目的:
1.减少表的记录数
2.减小对操作系统的负担压力
4-3 使用中间表提高统计查询速度
中间表的产生:
1.view视图
2.重新生成一个新表
mysql服务器优化 5.1 myisam读锁定
1.lock table t1 read
2.开启另一个mysql连接终端,接着去尝试:select * from t1
3.再insert、update和delete t1这张表,你会发现所有的数据都停留在终端上没有真正的去操作
4.读锁定对我们在做备份大量数据时非常有用。
mysqldump -uroot -p123 test >test.sql
5.2 myisam写锁定
1.lock table t1 write
2.打开另一个mysql终端,尝试去select、insert、update和delete这张表t1,你会发现都不能操作,都会停留在终端上,只有等第一个终端操作完毕,第二个终端才能真正执行。
3.可见表的写锁定比读锁定更严格
4.一般情况下我们很少去显示的去对表进行read和write锁定的,myisam会自动进行锁定的
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 慢查询日志问题
1.有关慢查询
开户和设置慢查询时间:
vi /etc/my.cnf log_slow_queries=slow.log long_query_time=5
慢查询次数:
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.有时登陆mysql时提示不能用socket登陆,此时可以换成tcp方式去登陆,但是可以测试时可以这样用,但是必须要在PHP去用之前把这个事情解决了。
这样就可以登陆,这样就不用mysql.sock来登陆,而mysql.sock是启动mysqld服务时产生的
6. 5 root 密码丢失
root密码丢失破解
service mysqld stop mysqld_safe --skip-grant-tables --user=mysql& //跳过授权表mysql.user和mysql.db这些表 mysql -uroot set password=password("wei"); //用这一条语句结果报错,就是因为加了--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"); //和第五步一样,都可能成功修改密码