转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> 其他 >> 正文
MySQL数据目录结构(1)         ★★★★

MySQL数据目录结构(1)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2285 更新时间:2009/4/22 23:21:52
它是数据目录下的一个子目录其名字与它表示的数据库相同。例如数据库my_db对应于数据库目录DATADIR/my_db。

这种表示允许多个数据库级的语句在其实现中十分简单。CREATE DATABASE db_name在数据目录中创建一个db_name空目录
具有只允许MySQL服务器用户(运行服务器的Unix用户)的属主和模式这等价于下列手工在服务器主机上创建数据库

%mkdir DATADIR/db_name%chmod 700 DADADIR/db_name



用一个空目录表示一个新数据库的最简单方法与其它数据库甚至为一个空数据库创建大量的控制文件或系统文件正好相反。

DROP DATABASE语句实现同样简单。DROP DATABASE db_name删除数据库中的db_name目录和所有表文件
这几乎与下列命令一样

%rm -rf DATADIR/db_name



(差别是服务器只删除具有已知用于表的后缀名的文件。如果你在数据库目录创建了其它文件。则服务器保留它们而且目录本身不被删除。

SHOW DATABASE基本上不做什么
只是列出位于数据目录中的目录名。有些数据库系统保持一个主表用于维护所有数据库但在MySQL无此构件。由于赋予数据目录结构的简洁性数据库列表隐含在数据目录的内容中而且这样的表不必有额外的开销。

2
.3 数据库表的表示



每个数据库在数据库目录中有3个文件
一个样式描述文件、一个数据文件和一个索引文件。每个文件的基本名是表名文件名扩展名代表文件类型。扩展名如下表。数据和索引文件的扩展名指出表使用老式IASM索引或新式MyISAM索引。表 MySQL文件类型

文件类型 文件名扩展名 文件内容

样式文件
.frm 描述表的结构它的列、列类型、索引等

数据文件
.ISD(ISAM)

.MYD(MyISAM) 包含数据文件上的所有索引的索引树。

索引文件
.ISM(ISAM)

.MYI(MyISAM) 该索引文件依赖表是否有索引而存在。



当你发出一条CREATE TABLE tbl_name时语句定义表的结构时
服务器创建一个名为tbl_name.frm的文件它包括该结构的内部编码同时也创建一个空数据和索引文件初始化为包含指出无记录和无索引的信息如果CREATE TABLE语句包括索引指定索引文件反映出这些索引。对应于表的文件的属主和模式被设置为只允许MySQL服务器用户访问。

当你发出一条ALTER TABLE tbl_name语句时
服务器重新编码tbl_name.frm并修改数据和索引文件的内容以反映语句指定的结构改变。对于CREATE INDEX和DROP INDEX也是一样因为它们被服务器视为与ALTER TABLE等价。DROP TABLE通过删除对应于表的三个文件来实现。

虽然你可以通过删除数据库目录中对应于表的三个文件
但不能手工创建或修改一个表如果my_db是当前数据库DROP TABLE my_tbl大概等价于下列命令。

% rm -rf DATADIR/my_db/my_tbl.*

SHOW TABLE my_db的输出只是列出my_db数据库目录中的.frm文件的基文件名。有些数据库系统一个注册表列举所有包含在一个数据库中的表MySQL不是因为不必要“注册表”隐含在数据目录的结构中。

2
.4 操作系统对数据库和表命名的限制



MySQL对命名数据库和表有一个原则


名字可以由当前字符集中的任何字母数字字符组成
下划线和美元符$也可以。

名字最长为64个字符。



然而
因为数据库和表的名字对应于目录和文件名服务器运行的操作系统可能强加额外的限制。

首先
数据库和表名仅限于对文件名合法的字符如$在MySQL的原则中是允许的但是如果你的操作系统不允许则你不能在目录或表名中使用它。实际上这对Unix或Windows不是所担心的最大的难度是在执行数据库管理时直接在shell中引用名字例如如果你命名一个数据库如$my_db包含一个美元符任何从shell中对该名字的引用可能被shell解释为对一个变量的引用

%ls $my_db

my_db
:undefined variable

对此
你必须转义$字符或用引号禁止其特殊含义

%ls \$my_db

%ls '$my_db'

如果你用引号一定要用单引号而双引号并不禁止变量解释。

其次
虽然MySQL允许数据库和表名最长到64个字符但名字的长度受限于你的操作系统限定的长度一般这不是一个问题虽然老的System V强制14个字符。在这种情况下你数据库名的上限为14个字符而表名上限为10个字符因为表示表的文件名有一个点.和三个字符的扩展名。

第三
文件系统的大小写敏感性影响到你如何命名和引用数据库和表名。如果文件系统是大小写敏感的如Unix两个名字my_tbl和MY_TBL是不同的表。如果文件系统不是大小写敏感的如Windows这两个名字指的是相同的表。如果你用一个Unix服务器开发数据库并且如果你有可能转移到Windows你应该记住这一点。

2
.5 MySQL状态文件



除了数据库目录
MySQL数据目录还包含很多状态文件这些文件总结在下表中。大多数文件的缺省名从服务器主机名生成在下表中表示为HOSTNAME。表 MySQL状态文件

文件类型 缺省名 文件内容

进程ID HOSTNAME
.pid 服务器进程的ID

出错日志 HOSTNAME
.err 启动和关闭事件和出错情况

一般日志 HOSTNAME
.log 连接/断开事件和查询信息

更新日志 HOSTNAME
.nnn 修改表结构级内容的所有查询文本



当服务器启动时
它将其进程ID写入进程IDPID文件中而在它关闭时删除该文件。PID文件是允许服务器本身被其他进程找到的工具。例如如果你运行mysql.server在系统关闭时关闭MySQL服务器的脚本检查PID文件以决定它需要向哪个进程发出一个终止信号。

出错日志由safe_mysqld创建
作为服务器标准出错输出的重定向它包含任何邪到stderr的消息。

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


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台