[日常] PHP与Mysql测试kill慢查询并检验PDO的错误模式
发布日期:2021-05-18 07:59:26 浏览次数:21 分类:精选文章

本文共 1183 字,大约阅读时间需要 3 分钟。

MySQL性能优化实践指南

1. PDO 错误模式设置

在使用 PDO 连接数据库时,确保错误模式设置为抛出异常模式。这一设置可以避免使用错误日志,并保持程序的正常运行流程。具体操作如下:

$opts = array(    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);$pdo = new PDO("mysql:host=localhost;dbname=pan", "root", "xxxx", $opts);$pdo->query('set names utf8');$sth = $pdo->prepare("select sleep(20) from texts where title like '%测试%'");$sth->execute(array("title" => "测试"));$res = $sth->fetchAll(PDO::FETCH_ASSOC);print_r($res);

在处理异常时,确保有专门的异常类来捕捉并处理错误。对于非整型参数等错误,可以避免因未处理而触发致命错误(500错误)。

2. 慢查询优化配置

为了分析和解决慢查询问题,可以采取以下步骤:

  • 开启慢查询日志和文件配置:

    slow_query_log = onslow_query_log_file = /usr/local/mysql/data/slow.loglong_query_time = 1
  • 使用监控工具分析慢查询:

    SHOW VARIABLES LIKE 'slow_query%';SHOW VARIABLES LIKE 'long_query_time';
  • pregnancies 处理未完成的查询线程:

    SHOW full processlist;KILL id_number;
  • 3. 性能测试与优化建议

    在完成上述配置后,建议采用以下方式验证和优化性能:

  • 使用工具测试:

    sysbench --Enhance=1 --time=1m --mysql "SELECT sleep(20) FROM texts WHERE title LIKE '%测试%'"
  • 确定优化方向:

  • 长查询日志分析:-FINE/INFO等日志级别来获取更多查询详情。

  • 4. 常见问题与解决方案

    • 如果长查询持续存在,可能需要检查索引和锁定(InnoDB设置innodblocking=0)。
    • 硬连接数过多,文件系统可能存在争夺,建议检查磁盘使用情况和IOPS。

    5. 最终注意事项

    • 保持数据库日志分配合理,不要使用SSD存储日志文件。
    • 定期清理旧日志和错误日志,避免存储占用过大。
    • 关注数据库的磁盘空间使用情况,及时扩容或清理临时文件。

    通过以上优化措施,可以有效提升MySQL的性能表现,减少慢查询对整体系统的影响。

    上一篇:[日常] 高性能MySQL-索引
    下一篇:[日常] Go语言圣经-示例: 并发的目录遍历习题

    发表评论

    最新留言

    路过,博主的博客真漂亮。。
    [***.116.15.85]2025年05月17日 04时55分17秒