一、数据库维护
1. 问题描述:MySQL数据库基于磁盘的文件, 普通的备份系统和例程均可备份MySQL的数据,但是由于这些文件总是处于打开和使用状态, 普通的文件副本不一定总是有效
2. 可选方案:(目前所示仅供参考)
(1). 使用命令行实用程序mysqldump 转储所有数据库内容到某个外部文件,在进行常规备份前该实用程序应该正常运行,以便能正确地备份转储文件
(2). 可用命令行实用程序mysqlhotcopy 从一个数据库复制所有数据 (值得注意的是,并非所有数据库引擎都支持这个实用程序)
(3). 可以使用MySQL的BACKUP TABLE 或 SELECT INTO OUTFILE 转储所有数据到某个外部文件,这两条语句均支持要创建的系统文件,此系统文件必须不存在,否则将会出错
注意事项:首先刷新未写数据
为保证所有数据被写到磁盘(含索引),可能需要在进行备份前使用FLUSH TABLES 语句
3. 关键字作用
(1). 用于针对许多问题对表进行检查 (在MyISAM表上还对索引进行检查)
CHECK TABLE orders, orderitems;
CHECKSUM TABLE orders, orderitems;
(2). 删除表中大量数据后, 并回收所用的空间 (有利于优化表的性能)
OPTIMIZE TABLE orders;
(3). 检查自最后一次检查以来改动过的表:CHANGED
(4). 执行最彻底的检查:EXTENDED
(5). 只检查未正常关闭的表:FAST
(6). 检查所有被删除的链接并进行键检验:MEDIUM
(7). 只进行快速扫描:QUICK
二、查看日志文件
说明:总共包括四类日志文件 (具体如下)
(1). 错误日志(hostname.err):包含启动和关闭问题以及任意关键错误的细节,通常位于data目录中
(2). 查询日志(hostname.log):记录所有MySQL活动, 在诊断问题时非常有用,但此日志会很快变大,不应该长期使用
(3). 二进制日志(hostname-bin):记录更新过数据的所有语句, 位于data目录内
(4). 缓慢插叙日志(hostname-slow.log):此日志记录执行缓慢的任何查询, 用于确定数据库何处需要优化十分有用
注意:在使用日志时, 可用FLUSH LOGS语句刷新和重新开始所有日志文件
三、性能改善的解决措施
1. 通常,关键的生成DBMS应该运行在自己的专用服务器上
2. MySQL是多用户多线程的DBMS,经常同时执行多个任务;若遇性能不良,可用SHOW PROCESSLIST查看所有活动进程,还可用KILL命令结束某个进程(该命令需管理员登录)
3. 总是有不止一种方法编写同一条SELECT语句,应试验联结、并、子查询等,找出最佳方法
4. 使用EXPLAIN语句让MySQL解释它将如何执行一条SELECT语句
5. 一般而言,存储过程比逐条执行其中的各条MySQL语句要快
6. 应该总是使用正确的数据类型
7. 绝不要检索比需求还多的数据 (慎重使用SELECT * FROM TABLE)
8. 某些操作(如INSERT)支持一个可选DELAYED关键字,若使用将把控制返回给调用程序,且有可能就实际执行该操作
9. 在导入数据时,应该关闭自动提交;若还想删除索引,然后在导入完成后在重建它们
10. 必须索引数据库表以改善数据检索的性能,但损害数据插入、删除和更新的性能
11. 通过使用多条SELECT语句和连接它们的UNION语句,可以看到极大的性能改进
12. 检索使用LIKE关键字很慢,建议最好使用FULLTEXT,而非LIKE
说明:数据库是不断变化的实体;最重要的规则是,每条规则在某些条件下都会被打破