Mysql入门:MySQL数据目录的结构.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mysql入门:MySQL数据目录的结构

Mysql入门系列:MySQL数据目录的结构 MySQL数据目录中包含由服务器管理的所有数据库和表。它们被组织成一个树状结构,该结构是通过UNIX 或Windows 文件系统的层次结构用简单的方式实现的:   每个数据库对应该数据目录下的一个目录。   数据库中的表对应数据库目录中的文件。   数据目录还包含几个由服务器生成的状态文件,如日志文件。这些文件提供了关于服务器运作的重要信息,对管理员是有用的,尤其是当问题出现且试图确定问题的原因时特别有用。例如,如果某个特定的查询毁坏了数据库,您可以通过检查日志文件来识别这个讨厌的查询。   MySQL服务器怎样提供对数据的访问   数据目录中的一切都由一个单个的实体进行管理,即MySQL服务器的mysqld。客户机程序不能直接操纵数据。而服务器提供了访问数据库的唯一的连结点,它担当着客户机程序和所需数据之间的媒介(参见图10 - 1)      当启动服务器时,如果有任何请求,它都将打开日志文件,然后通过对网络连接的监听向数据目录展现网络接口。为了访问数据,客户机建立一个到服务器的连接,然后传达作为SQL 查询的请求,以完成所期望的操作(例如,创建表、选择记录、更新记录)。服务器执行每个操作并将结果发送回客户机。服务器是多线程的,可以服务于多个并发的客户机的连接。但是,由于更新操作一次只能执行一个,因此实际上这些请求是顺序化的,两个客户机决不可能在同一时刻修改同一个记录。   在正常条件下,使服务器担当数据库访问的唯一仲裁者将提供对防止各种讹误的担保,这些讹误可导致多个进程同时访问数据库的表。然而,管理员应该知道:存在着服务器不具有对数据目录独占控制的时期:   何时在单个数据目录中运行多个服务器。通常情况下是运行一个单个的服务器来管理主机中的所有数据库,但是运行多个服务器也是可能的。如果这样做可以提供对多个独立的数据目录的访问,则不存在交互作用的问题。但是,有可能启动多个服务器并在相同的数据目录中指向它们。这是一个好主意,如果您想试试它,最好应确保系统提供了良好的文件锁定性能,否则服务器之间将不能协调地工作。如果将多个服务器同时写入日志文件,则将会使日志文件成为混乱的来源(而不是有用信息的来源)。   何时运行isamchk 和my i s a m c h k。isamchk 和myisamchk 实用程序用于表的维护、故障排除和修复。正如您所猜测的,由于这些实用程序能改变表的内容,所以如果在服务器运作的同时允许实用程序对表进行操作,将引起表的毁坏。了解怎样限制这种类型的交互作用以避免表毁坏是重要的。有关恰当使用这些程序的说明,请参阅第13章“数据库维护和修复”。   数据库的表示法   由MySQL管理的每个数据库都有自己的数据库目录,它们是数据目录的子目录,与所表示的数据库有相同的名称。例如,数据库my_db 对应于数据库目录DATA D I R/ my _ db。   这个表示法使得几个数据库级的语句的实现几乎是微乎其微的。CREATE DATA B A S E db _ name 使用只允许对MySQL服务器用户(服务器运行的UNIX 用户)进行访问的所有权和方式,并在数据目录中创建一个空目录db _ name。这等价于以服务器主机中的服务器用户的身份通过执行下列命令手工创建数据库:   % mkdir DATADIR/db_name 创建数据库目录   % chmod 700 DATADIR/db_name 使它仅对MySQL服务器用户可访问   通过空目录表示新数据库的方法与其他数据库系统完全不同,那些数据库系统甚至要为“空”数据库创建许多控制文件或系统文件。   DROP DATABASE 语句也很容易实现。DROP DATABASE db _ name 删除数据目录中的db _ name 目录以及其中的所有表文件。这个语句类似于下列命令:   %rm -rf DATA D I R / db _ name   其区别是,服务器只删除带有表的扩展名的文件。如果已经在该数据库目录中创建了其他的文件,服务器将使它们保持完整,并且不删除该目录本身。   SHOW DATABASE 只不过是对应位于数据目录中的子目录名称的一个列表。有些数据库系统需要保留一个列出所有需要维护的数据库的主表,但是,在MySQL中没有这样的结构。由于数据目录结构的简单性,数据库的列表是隐含在该数据目录的内容中的,像主表这样的   表可能会引起不必要的开销。   数据库表的表示法   数据库中的每个表在数据库目录中都作为三个文件存在:一个格式(描述)文件、一个数据文件和一个索引文件。每个文件的基名是该表名,扩展名指明该文件的类型。扩展名如表10 - 1所示。数据和索引文件的扩展名指明该表是否使

文档评论(0)

rzz181 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档