`
jguangyou
  • 浏览: 375681 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql初识之数据文件及其他文件 (转载 )

 
阅读更多
数据文件
 
在mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。mysql的表引擎有多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等。
 
myisam表引擎
myisam表会产生三个文件:MYI、MYD、frm文件
 
frm文件:
主要存放表的元数据(meta),包括表结构定义信息等。不论是哪个表引擎都会有一个frm文件,存放在数据库的数据目录下。
 
.MYI文件(索引文件):
主要存放myisam的索引信息可以被cache的内容主要源于 .MYI文件中,每个myisam表对应一个 .myi文件,存放的位置与 .frm 、MYI一样。
 
innodb引擎
 
使用innodb引擎时,需要理解独立表空间、共享表空间。
 
独立表空间:每个表都会生成以独立的文件方式来存储,每个表都一个.frm的描述文件,还有一个.ibd文件。其中这个文件包括了单独一个表的数据及索引内容,默认情况下它的存储在mysql指定的目录下。
 
独立表空间优缺点:
 
优点:
每个表都有自己独立的表空间;每个表的数据和索引都会存储在各个独立的表空间中;可以实现 单表 在不同的数据进行迁移;表空间可以回收(除了drop table操作,表空不能自己回收);drop table 操作自动回收表空间,如果对统计分析或是日值表,删除大量数据后可以通过 :alter table tablename engin=innodb进行回缩不用的空间;对于使用inodb-plugin的innodb使用truncate table会使用空间收缩。;对于使用独立表空间,不管怎么删除 ,表空间的碎片都不会太严重。
 
缺点:
 
单表增加过大,如超过100G。对于单表增长过大的问题,如果使用共享表空间可以把文件分开,但有同样有一个问题,如果访问的范围过大同样会访问多个文件,一样会比较慢。对于独立表空间也有一个解决办法是:使用分区表,也可以把那个大的表空间移动到别的空间上然后做一个连接。其实从性能上出发,当一个表超过100个G有可能响应也是较慢了,对于独立表空间还容易发现问题早做处理。
 
共享表空间:某一个数据库所有的表数据,索引文件全部都放在一个文件 中,默认这个共享表空间的文件路径在data目录下,默认的文件名为 bata1,初始化为10M。
 
共享表空间优缺点
 
优点:可以将表空间分成多个文件存放在各个磁盘上(表空间文件大小不受表大小 的限制,如一个表可以分布在不同的文件上),数据和文件放在一起方便管理。
 
缺点:所有的数据和索引存放 到一个文件中,将来会是一个很大的文件,虽然 可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对一个表做了大量删除操作后表空间将有大量的空隙,特别是对统计分析、日值系统这类应用最不适合用共享表空间。
 
 
如何开启独立表空间?
 
查看是否开启独产表空间:
 
mysql> show variables like '%per_table';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF   |
+-----------------------+-------+
 
设置开启:
在my.cnf文件中[mysqld] 节点下添加innodb_file_per_table=1
 
注:
 
innodb_file_per_table值来进行修改即可,但是对于之前使用过的共享表空间则不会影响,除非手动的去进行修改或者是
innodb_file_per_table=1 为使用独占表空间
innodb_file_per_table=0 为使用共享表空间
修改独占空表空间的数据存储位置
innodb_data_home_dir = "C:\mysql\data\"
innodb_log_group_home_dir = "C:\mysql\data\"
innodb_data_file_path=ibdata1:10M:autoextend
innodb_file_per_table=1
参数说明:
这个设置配置一个可扩展大小的尺寸为10MB的单独文件,名为ibdata1。没有给出文件的位置,所以默认的是在MySQL的数据目录内。【对数据来进行初始化的设置】
innodb_data_home_dir              代表为数据库文件所存放的目录
innodb_log_group_home_dir       为日志存放目录
innodb_file_per_table               是否使用共享以及独占表空间来
 
以上的几个参数必须在一起加入。
对于参数一些注意的地方
InnoDB不创建目录,所以在启动服务器之前请确认”所配置的路径目录”的确存在。这对你配置的任何日志文件目录来说也是真实的。使用Unix或DOS的mkdir命令来创建任何必需的目录。
 
通过把innodb_data_home_dir的值原原本本地部署到数据文件名,并在需要的地方添加斜杠或反斜杠,InnoDB为每个数据文件形成目录路径。
如果innodb_data_home_dir选项根本没有在my.cnf中提到,默认值是“dot”目录 ./,这意思是MySQL数据目录。
 
 
replication相关文件
 
1.master.info文件
 
master.info文件存放在slave端的data目录下,里面存的是slave对应的master端所读取到的相关信息,包括master的主机地地,连接用户、密码、端口,当前日志位置、已读取到的日志位置等信息。
 
2.relay log 和relay log index 
 
mysql-relay-bin.xxxxxn文件用于存放Slave端的I/O线程从Master端所读取到的BinaryLog信息,然后由Slave端的SQL线程从该relaylog中读取并解析相应的日志信息,转化成Master所执行的SQL语句,然后在Slave端应用。mysql-relay-bin.index文件的功能类似于mysql-bin.index,同样是记录日志的存放位置的绝对路径,只不过他所记录的不是BinaryLog,而是RelayLog。
 
3. relay-log.info文件
 
类似于master.info,它存放通过Slave的I/O线程写入到本地的relaylog的相关信息。供Slave端的SQL线程以及某些管理操作随时能够获取当前复制的相关信息
 
 
其他文件
 
1、systemconfigfile
 
MySQL的系统配置文件一般都是“my.cnf”,Unix/Linux下默认存放在"/etc"目录下,Windows环境一般存放在“c:/windows”目录下面。“my.cnf”文件中包含多种参数选项组(group),每一种参数组都通过中括号给定了固定的组名,如“[mysqld]”组中包括了mysqld
服务启动时候的初始化参数,“[client]”组中包含着客户端工具程序可以读取的参数,此外还有其他针对于各个客户端软件的特定参数组,如mysql程序使用的“[mysql]”,mysqlchk使用的“[mysqlchk]”,等等。如果读者朋友自己编写了某个客户端程序,也可以自己设定
一个参数组名,将相关参数配置在里面,然后调用mysql客户端api程序中的参数读取api读取相关参数。
 
2、pidfile
pid file是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,存放着自己的进程id。
 
3、socketfile
 
socket文件也是在Unix/Linux环境下才有的,用户在Unix/Linux环境下客户端连接可以不通过TCP/IP网络而直接使用UnixSocket来连接MySQL。
分享到:
评论

相关推荐

    在Linux中修改MySQL数据文件存放位置

    Linux 中修改 MySQL 数据文件存放位置 概述 在 Linux 中,MySQL 数据文件的存放位置默认在 `/var/lib/mysql` 目录下。但是,在某些情况下,我们可能需要将数据文件存放位置修改到其他目录下。这篇文章将会指导您...

    全球国家地区大洲mysql数据文件

    标题中的“全球国家地区大洲mysql数据文件”指的是一个包含全球各国、地区和大洲信息的MySQL数据库数据文件。这个数据文件是由用户自行整理的,主要用于存储地理信息,便于在MySQL数据库环境中进行查询和分析。 ...

    MySQL数据库文件存放位置

    首先,MySQL的数据文件主要分为两类:系统数据文件和用户数据文件。系统数据文件包括配置文件(如my.ini或my.cnf)、日志文件(如错误日志、二进制日志等)以及服务相关的文件。用户数据文件则包含数据库的表、索引...

    Access 导入MySQL 数据文件

    总之,从Access导入MySQL数据文件是一个将小型数据库系统升级到更强大平台的过程。通过使用专门的工具如msa2mys,用户可以轻松地将Access的数据无缝迁移到MySQL,享受更高效、更强大的数据库服务。这一过程中,理解...

    mysql存储和提取文件

    本资源用C#语言实现: 1、与MySQL数据库的操作,包括连接、查询、修改、删除等;...4、MySQL数据防止重复插入功能; 5、MySqlHelpher操作类,完全由我本人实现,此类包含简洁的传参方法,极大方便含参sql语句的书写。

    mysql导出数据文件

    mysql导出数据文件 mysql导出数据文件 数据库

    TXT文件数据导入到mysql数据库

    本主题聚焦于如何将TXT文件中的数据导入到MySQL数据库,这一过程对于数据迁移、数据备份或者数据分析等场景非常实用。首先,我们需要了解TXT文件的格式以及MySQL的数据类型,以便进行有效且准确的数据转换。 TXT...

    MySQL官网测试数据上百万条数据sql文件

    在本资源中,我们有一个名为"MySQL官网测试数据上百万条数据sql文件"的压缩包,它包含了一个或多个SQL脚本,这些脚本设计用于在MySQL数据库中创建并填充大量的测试数据。 SQL(Structured Query Language)是用于...

    最新全国省市区地区(MySQL)数据,附数据文件

    标题中的“最新全国省市区地区(MySQL)数据”指的是一个包含中国所有省份、城市和区县的数据库数据,这些数据通常被用于地理位置信息的存储和查询。在网站开发、数据分析或者GIS(地理信息系统)应用中,这样的数据...

    python读取txt文件将数据导入mysql数据库

    在测试的时候,需要造模拟数据,或者是将生产环境的数据导出到测试环境中去,本文记录通过python读取txt文件,并将数据导入mysql数据库 1、示例代码: import pymysql # 打开数据库连接 conn = pymysql.connect(host...

    mamp pro 中mysql文件

    这可能指的是替换MySQL的数据日志文件、配置文件或者是其他关键文件。在MAMP PRO中,主要的MySQL配置文件是`my.cnf`或`my.ini`,它位于MAMP的配置文件夹内,如`/Applications/MAMP/conf`。如果报错与配置有关,你...

    java 从mysql数据库导出数据生成xml文件

    java 从mysql数据库导出数据生成xml文件,新手来的,不喜勿喷

    MySQL导出数据并通过sqlldr导入oracle

    /mysqltooracle/exportcmd.txt,打开该文件即可获取需要手动执行的导出MySQL数据的sql脚本,执行后会在 “/var/mysqltooracle”(针对Linux系统,代码中能修改)生成数据文件;同时代码还会生成sqlldr命令需要用到的...

    mysql200万条大数据量测试sql文件

    mysql200万+条大数据量测试sql文件,可以用于测试服务器数据库性能,学习sql性能优化和调优。资源是.sql文件压缩后上传。用navicat导入实测用时几分钟时间,数据量200W+条。快速获取百万级真实测试数据。

    mysql数据表导出生成xml文件和树形结构

    MySQL 数据表导出生成 XML 文件是一项常见的数据转换任务,它允许我们把数据库中的结构化数据转化为一种便于交换和处理的格式。XML(eXtensible Markup Language)是一种标记语言,常用于存储、传输和表示数据,尤其...

    MySQL导入.sql文件及常用命令

    MySQL 导入.sql 文件及常用命令 MySQL 是一种关系型数据库管理系统,广泛应用于 Web 应用程序中。 MySQL 中有多种方式可以导入.sql 文件,并且提供了许多常用命令来管理和维护数据库。 一、导入.sql 文件 在 ...

    mysql数据安装文件

    双击exe文件即可安装mysql数据库,mysql数据库可以和php连接 制作网页

    mysql通过data文件夹恢复数据和存储过程的方法

    - **Data文件夹**是MySQL服务器用于存储所有数据库表空间文件、索引文件以及一些其他系统文件的地方。 - MySQL默认情况下会在安装目录下的`data`文件夹中存放这些文件。 - 对于InnoDB表,数据通常存储在`.ibd`...

Global site tag (gtag.js) - Google Analytics