作者:用巛户khm8pcnjp9 | 来源:互联网 | 2024-10-24 12:37
本文探讨了MySQL服务器性能优化的策略与实践,重点关注MyISAM存储引擎的读锁定机制。通过具体案例分析,介绍了如何通过合理的锁管理提升查询效率,例如在表级读锁定(`LOCKTABLEt1READ`)后,如何处理并发连接请求,确保数据一致性和系统稳定性。同时,文章还讨论了在锁定期间执行查询操作的最佳实践,如使用`SELECT*FROMt1`时应注意的事项,以避免潜在的性能瓶颈。
7.1、myisam 读锁定
1、lock table t1 read
2、开启另一个mysql连接中断,接着去尝试:select * from t1
3、再insert、update和delete t1这张表,你会返现所有的数据都停留在终端上没有真正的去操作
4、读锁定对我们在做备份大量数据时非常有用
mysqldump -uroot -p123 test>test.sql
7.2、myisam 写锁定
1、lock table t1 write
2、打开另一个MySQL终端,尝试去select、insert、update和delete这张表t1,你会返现都不能操作,都会停留在终端上,只有等第一个终端操作完成,第二个终端才能真正执行 。
3、可见表的写锁定比读锁定更严格
4、一般情况下我们很少去显示的去对表进行read和write锁定的,myisam会自动进行锁定的。
7.3、服务器的优化
1、四中字符集问题
my.cnf配置文件 utf-8
查看各种字符集的校验字符集
mysql>show character set;
2、binary log 日志问题
show variables like “%bin%”;
log_bin 是否为ON
my.cnf配置文件中修改log-bin=mysql-bin
3、slow log慢日志查询问题
show variables like “%slow%”;
show variables like “%long%”;
log_slow_queries 设置为ON
开启和设置慢查询时间
vi /etc/my.cnf
log_slow_queries=slow.log
long_query_time=5
4、socket文件问题
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
socket=/tmp/mysql.sock
skip-locking
重新启动一下mysql就能自动生成mysql.socket文件
mysqld_safe —user=mysql &
5、root 密码丢失
(1)service mysqld stop
(2)mysqld_safe —skip-grant-tables —user=mysql&
//跳过授权表mysql.user和mysql.db这些表
(3)mysql -uroot
(4)set password=password(“wei”);
用这一条语句结果报错,就是因为加了 —skip-grant-tables
mysql>update user set password=password(“wei”) where user=“root” and host=“localhost”;
(5)mysql>set password for root@localhost=password(“wei”);
(6)mysql>set password=password(“wei”);