版权归原作者所有,如有侵权,请联系我们

[科普中国]-数据库目录

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

数据库目录是数据库服务器存放数据文件的地方,不仅包括有关表的文件,还包括数据文件和的服务器选项文件。不同的分发,数据库目录的缺省位置是不同的。如果运行多个服务器,那么您应该掌握所有数据目录的位置。

数据目录的位置缺省数据库的位置编译在服务器中。

如果您是在一个源程序分发包中安装 MySQL,典型的缺省位置可能是 /usr/local/var;

如果在二进制分发包中安装 MySQL,则为 /usr/local/mysql/ data;

在 RPM 文件中安装,为 /var/lib/mysql。

对于windwos平台上的分发,其位置时BASEDIR\data

数据目录的位置可以在启动服务器时通过--datadir = / path / to / dir 明确地指定。如果您想将数据目录放置在其他地方而非缺省的位置,则这个选项是有用的。

数据目录结构以MySQL数据库为例,MySQL数据目录包含了服务器管理的所有数据目录,这些文件被组织成一个树状结构,通过利用Unix或Windows文件系统的层次结构直接实现。
每个数据库对应于数据目录下的一个目录。
在一个数据库中的表对应于数据目录下的文件。
数据目录也包含由服务器产生的几个状态文件,如日志文件。这些文件提供了关于服务器操作的重要信息。对管理特别在出了问题而试图确定问题原因时很有价值。例如,如果某个特定查询杀死服务器,你可以通过检查日志文件判别捣乱的查询。1

数据库表的表示法数据库中的每个表在数据库目录中都作为三个文件存在:一个格式(描述)文件、一个数据文件和一个索引文件。每个文件的基名是该表名,扩展名指明该文件的类型。扩展名如表1所示。数据和索引文件的扩展名指明该表是否使用较老的 ISAM 索引或较新的 MyISAM 索引。当发布定义一个表结构的 CREATE TABLE tbl_name 语句时,服务器创建 tbl_name.frm 文件,它包含该结构的内部编码。该语句还创建空的数据文件和索引文件,这些文件的初始信息表明没有记录和索引(如果 CREATE TABLE 语句包含索引说明,则该索引文件将反映这些索引)。描述表的文件的所有权和方式被设置为只允许对 MySQL 服务器用户的访问。

当发布 ALTER TABLE 语句时,服务器对 tbl_name.frm 重新编码并修改数据文件和索引文件的内容以反映由该语句表明的结构变化。对于 CREATE 和 DROP INDEX 也是如此,因为服务器认为它们等价于 ALTER TABLE 语句。DROP TABLE 删除代表该表的三个文件。

尽管可以通过删除数据库目录中的对应某个表的三个文件来删除该表,但不能手工创建或更改表。例如,如果 my_db 是当前的数据库,DROP TABLE my_tbl 大致等价于下列命令:

来自于 SHOW TABLES my_db 的输出结果正是 my_db 数据库目录中 .frm 文件基名的一个列表。某些数据库系统维护一个列出了数据库中的所有表的登记。但 MySQL 不这样做,因为没有必要,这个“登记”隐含在了数据目录的结构中。1

评论
科普cuili007
庶吉士级
学习了
2022-12-31