| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,外语很重要,最新的编程技术还是在国外  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 数据库 >> mysql >> 使用实例 >> 文章正文
MySQL数据目录结构(1)            【字体:
MySQL数据目录结构(1)
作者:不详    文章来源:网络    点击数:    更新时间:2007-1-21
SHOWDATABASE基本上不做什么,只是列出位于数据目录中的目录名。有些数据库系统保持一个主表,用于维护所有数据库,但在MySQL无此构件。由于赋予数据目录结构的简洁性,数据库列表隐含在数据目录的内容中,而且这样的表不必有额外的开销。
2.3数据库表的表示

每个数据库数据库目录中有3个文件:一个样式(描述文件)、一个数据文件和一个索引文件。每个文件的基本名是表名,文件名扩展名代表文件类型。扩展名如下表。数据和索引文件的扩展名指出表使用老式IASM索引或新式MyISAM索引。表MySQL文件类型
文件类型文件名扩展名文件内容
样式文件.frm描述表的结构(它的列、列类型、索引等)。
数据文件.ISD(ISAM)
或.MYD(MyISAM)包含数据文件上的所有索引的索引树。
索引文件.ISM(ISAM)
或.MYI(MyISAM)该索引文件依赖表是否有索引而存在。

当你发出一条CREATETABLEtbl_name时语句定义表的结构时,服务器创建一个名为tbl_name.frm的文件,它包括该结构的内部编码,同时也创建一个空数据和索引文件,初始化为包含指出无记录和无索引的信息(如果CREATETABLE语句包括索引指定,索引文件反映出这些索引)。对应于表的文件的属主和模式被设置为只允许MySQL服务器用户访问。
当你发出一条ALTERTABLEtbl_name语句时,服务器重新编码tbl_name.frm,并修改数据和索引文件的内容以反映语句指定的结构改变。对于CREATEINDEX和DROPINDEX也是一样,因为它们被服务器视为与ALTERTABLE等价。DROPTABLE通过删除对应于表的三个文件来实现。
虽然你可以通过删除数据库目录中对应于表的三个文件,但不能手工创建或修改一个表,如,如果my_db是当前数据库,DROPTABLEmy_tbl大概等价于下列命令。
%rm-rfDATADIR/my_db/my_tbl.*
SHOWTABLEmy_db的输出只是列出my_db数据库目录中的.frm文件的基文件名。有些数据库系统一个注册表,列举所有包含在一个数据库中的表,MySQL不是,因为不必要,“注册表”隐含在数据目录的结构中。
2.4操作系统对数据库和表命名的限制

MySQL对命名数据库和表有一个原则:
名字可以由当前字符集中的任何字母数字字符组成,下划线和美元符$也可以。
名字最长为64个字符。

然而,因为数据库和表的名字对应于目录和文件名,服务器运行的操作系统可能强加额外的限制。
首先,数据库和表名仅限于对文件名合法的字符,如$在MySQL的原则中是允许的,但是如果你的操作系统不允许,则你不能在目录或表名中使用它。实际上,这对Unix或Windows不是所担心的,最大的难度是在执行数据库管理时直接在shell中引用名字,例如,如果你命名一个数据库如$my_db,包含一个美元符,任何从shell中对该名字的引用可能被shell解释为对一个变量的引用:
%ls$my_db
my_db:undefinedvariable
对此,你必须转义$字符或用引号禁止其特殊含义:
%ls\$my_db
%ls$my_db
如果你用引号,一定要用单引号,而双引号并不禁止变量解释。
其次,虽然MySQL允许数据库和表名最长到64个字符,但名字的长度受限于你的操作系统限定的长度,一般这不是一个问题(虽然老的SystemV强制14个字符)。在这种情况下,你数据库名的上限为14个字符,而表名上限为10个字符,因为表示表的文件名有一个点(.)和三个字符的扩展名。
第三,文件系统的大小写敏感性影响到你如何命名和引用数据库和表名。如果文件系统是大小写敏感的(如Unix),两个名字my_tbl和MY_TBL是不同的表。如果文件系统不是大小写敏感的(如Windows),这两个名字指的是相同的表。如果你用一个Unix服务器开发数据库,并且如果你有可能转移到Windows,你应该记住这一点。
2.5MySQL状态文件

除了数据库目录,MySQL数据目录还包含很多状态文件,这些文件总结在下表中。大多数文件的缺省名从服务器主机名生成,在下表中表示为HOSTNAME。表MySQL状态文件
文件类型缺省名文件内容
进程IDHOSTNAME.pid服务器进程的ID
出错日志HOSTNAME.err启动和关闭事件和出错情况
一般日志HOSTNAME.log连接/断开事件和查询信息
更新日志HOSTNAME.nnn修改表结构级内容的所有查询文本

当服务器启动时,它将其进程ID写入进程ID(PID)文件中,而在它关闭时,删除该文件。PID文件是允许服务器本身被其他进程找到的工具。例如,如果你运行sql/Index.html'>mysql.server,在系统关闭时,关闭MySQL服务器的脚本检查PID文件以决定它需要向哪个进程发出一个终止信号。
出错日志由safe_sql/Index.html'>mysqld创建,作为服务器标准出错输出的重定向,它包含任何邪到stderr的消息。这意味着只有你通过调用safe_sql/Index.html'>mysqld启动服务器,出错文件才存在(无论如何,它是一个启动服务器的最好方法,因为如果它由于出错而退出,safe_sql/Index.html'>mysqld将重启服务器。)

上一页  [1] [2] [3] [4] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • MySQL数据的导出和导入工具:…

  • mysql授课大纲

  • mysql技巧总结

  • PPTP + MPPE + RADIUS + MyS…

  • 使用函数递归实现基于php和M…

  • 基于MySQL的高性能数据库应用…

  • Mysql日期和时间函数

  • 深圳讯天 mysql 服务器错误分…

  • 几分钟让你走进mysql的门

  • 针对 Apache 2.x 的 MySQL 用…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |