mysql初识之数据文件及其他文件 (转载 )ITeye - 牛牛娱乐

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

2019-01-11 11:00:41 | 作者: 又琴 | 标签: 文件,数据,空间 | 浏览: 706

在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。  文章出处:CSDN
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章