运行 OPTIMIZE TABLE 对表进行碎片整理以获得更好的性能

Bar*_*lah 12 mysql linux putty

我正在运行 Linux 64 位操作系统。我的 mysql 调谐器说的是以下内容:

-------- 一般统计 ---------------------------------------- ----------
[--] 跳过 MySQLTuner 脚本的版本检查
[OK] 当前运行支持的 MySQL 版本 5.1.61-log
[OK] 在 64 位架构上运行

-------- 存储引擎统计 ------------------------------- ----
[--] 状态:-Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] MyISAM 表中的数据:1G(表:1914)
[--] InnoDB 表中的数据:4M(表:199)
[!!] 总碎片化表:296

-------- 安全建议 ---------------------------------------- ---
[OK] 所有数据库用户都分配了密码

-  -  -  -  性能指标  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - ---------
[--] 最多:6s(7K q [1K qps],142 conn,TX:8M,RX:701K)
[--] 读/写:97% / 3%
[--] 总缓冲区:1.7G 全局 + 每线程 13.2M(384 个最大线程)
[OK] 最大可能内存使用量:6.6G(已安装 RAM 的 42%)
[OK] 慢查询:0% (0/7K)
[OK] 可用连接的最高使用率:5% (20/384)
[OK] 密钥缓冲区大小/MyISAM 索引总数:1.5G/2.7G
[OK] 键缓冲区命中率:97.4%(553K 缓存/14K 读取)
[OK] 查询缓存效率:64.6%(4K 缓存/6K 选择)
[OK] 每天查询缓存修剪:0
[OK] 需要临时表的排序:0%(2 个临时排序/337 个排序)
[OK] 在磁盘上创建的临时表:8%(磁盘上 17 个/总共 198 个)
[OK] 线程缓存命中率:85%(创建 20 个 / 142 个连接)
[OK] 表缓存命中率:98%(438打开/445打开)
[OK] 使用的打开文件限制:10% (856/8K)
[OK] 立即获得表锁:99%(2K 立即/2K 锁)
[OK] InnoDB 数据大小/缓冲池:4.2M/8.0M


-------- 建议 ----------------------------------------- ------------
一般建议:
    运行 OPTIMIZE TABLE 对表进行碎片整理以获得更好的性能
    MySQL 在过去 24 小时内启动 - 建议可能不准确

他们的建议是运行OPTIMIZE TABLE碎片整理表以获得更好的性能;但我不知道如何通过 Putty 运行它。

有没有人可以给我代码如何通过Putty运行它?

PJ *_*net 18

您也可以mysqlcheck -u username -p --auto-repair --optimize --all-databases在终端中尝试。

至于运行“优化表”,您可以像这样启动 MySQL,mysql -u username -p然后从那里您可以执行命令。通常我使用的第一个命令是show databases;但你应该首先找到一个 MySQL 教程。第一个出现在谷歌:http : //downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

是否使用腻子无关紧要。您可能想说“从命令行”而不是“通过 Putty”。

  • 这是一个比被接受的解决方案更好的解决方案。无需在运行命令之前枚举所有数据库和表,并自动修复。 (2认同)

Sha*_*den 7

OPTIMIZE TABLE 是一条 SQL 语句 - 在 MySQL 客户端中运行它。

在服务器的命令行上,你应该已经安装了命令行客户端;您可以使用mysql -u username -p.

有关更多信息,请参阅 上的文档OPTIMIZE TABLE

  • @gparent 是的 - 但我认为根据某人看到的 SQL 语句的了解来判断某人的专业水平是不公平的。研究会很快找到答案,但是......我不喜欢这个社区因为太“明显”而拒绝提问的想法。 (2认同)