MySQL——数据库维护及性能改善(终)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。
数据库维护
一、备份数据
由于MySQL数据库是基于磁盘文件,普通的备份系统和例程就能备份MySQL的数据。但是,由于这些文件总是处于打开和使用状态,普通的文件副本备份不一定总是有效。下面列出这个问题的可能解决方案:
(1)使用命令行实用程序mysqldump转储所有数据库内容到某个外部文件。在进行常规备份前这个实用程序应该正常运行,以便能正确地备份转储文件。
(2)可用命令行实用程序mysqlhotcopy从一个数据库复制所有数据(但并非所有数据库引擎都支持这个实用程序)。
(3)可以使用MySQL的BACKUP TABLE 或SELECT INTO OUTFILE转储所有数据到某个外部文件。这两条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用RESTORE TABLE来复原。
二、进行数据库维护
MySQL提供了一系列的语句,可以用来保证数据库正确和正常运行。
(1)ANALYZE TABLE,用来检查表键是否正确。ANALYZE TABLE返回如下所示的状态信息:
(2)CHECK TABLE用来针对许多问题对表进行检查。在MyISAM表上还对索引进行检查。CHECK TABLE支持一系列的用于MyISAM表的方式。CHANGED检查自最后一次检查以来改动过的表。EXTENDED执行最彻底的检查,FAST只检查未正常关闭的表。如下所示,CHECK TABLE发现和修复问题:
三、诊断启动问题
服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现。MySQL在这个问题发生时报告错误,但由于MySQL服务器是作为系统进程或服务自动启动的,这些消息可能看不到。在排除系统启动问题时,首先应该尽量用手动启动服务器。下面是几个重要的mysqld命令行选项:
(1)help显示帮助——一个选项列表;
(2)safe-mode装载减去某些最佳配置的服务器;
(3)verbose显示全文本消息(为获得更详细的帮助消息与help联合使用);
(4)version显示版本信息然后退出。
性能改善
(1)首先,MySQL(与所有DBMS一样)具有特定的硬件建议。但对用于生产的服务器来说,应该坚持遵循这些硬件建议。一般来说,关键的生产DBMS应该运行在自己的专用服务器上。
(2)MySQL是一个多用户多线程的DBMS,换言之,它经常同时执行多个任务。如果这些任务中的某一个执行缓慢,则所有请求都会执行缓慢。如果遇到显著的性能不良,可使用SHOW PROCESSLIST显示所有活动进程(以及它们的线程ID和执行时间)。
(3)一般来说,存储过程执行的比一条一条地执行其中的各条MySQL语句快。
(4)在导入数据时,应该关闭自动提交。你可能还想删除索引(包括FULLTEXT索引),然后在导入完成后再重建它们。
(5)LIKE很慢。一般来说,最好是使用FULLTEXT而不是LIKE。
(6)通过使用多条SELECT语句和连接它们的UNION语句,你能看到极大地性能改善。
(7)总是由不止一种方法编写同一条SELECT语句。应该试验联结、并、子查询等,找出最佳的方法。
......
......
......