标签:database 配置文件 engines commit foreign
Mysql提供了插件式(pluggable)的存储引擎,存储引擎基于表的。
Show engines;查看存储引擎
备注:my.ini配置文件的【mysqld】选项组中,参数default-storage-engine配置了mysql服务实例的默认存储引擎。默认安装mysql后,default-storage-engine的参数值为InnoDB。
InnoDB存储引擎
InnoDB是事务(transaction)安全的,并且支持外键(foreign key)。如果某张表主要提供OLTP支持,需要执行大量的增删改操作(insert、 update、 delete)。对于支持事务的InnoDB表,影响速度的主要原因是打开了自动提交(autocommit)选项,或者程序没有显示调用“begin transaction;”和“commit”提交事务,导致每条insert、database或者update语句都自动开始事务和提交事务,严重影响了更新(insert、update、delete)。
MyISAM存储引擎主要提供OLAP支持,MyISAM具有自检和修复表的大多数工具。MyISAM表可以被压缩。如果某张表需要大量select语句,出于性能考虑,采用MyISAM。
使用set default_storage_engine=MyISAM;可以修改存储引擎;
如果想永久地设置默认存储引擎,需要修改my.ini配置文件中【mysqld】选项组中default-storage-engine的参数值,并且需要重启mysql服务。
Create table my_table
选择InnoDB引擎,创建表后,生成一个表名、后缀名为frm的表结构定义文件my_table.frm.
Frm文件记录了my_table表结构定义。
选择MyISAM引擎,创建表后,生成一个表名、后缀名为frm的表结构定义文件外,还会自动创建一个表文件名为表名、后缀名为MYD(即MYData的简写)的数据文件以及文件名为表名、后缀名为MYI(MYIndex)的索引文件。
表记录
备注:NULL与空字符串“ ‘ ’ ”是两个概念。例如,查询name值为NULL的记录,需要使“name is null”;而查询name值为空字符串“ ‘ ’ ”的记录,需要使用“name= ‘ ‘”。类似地,NULL与完整数零以及空格字符“ ‘ ’ ”的概念也不相同。
InnoDB表空间
InnoDB表空间分为共享表空间与独享表空间。
共享表空间:
Mysql服务实例承载的所有数据库的所有InnoDB表的数据信息、索引信息、各种元数据信息以及事务的回滚(UNDO)信息,全部存放在共享文件中。默认情况下,该文件位于数据库的根目录下,文件名是ibdata1,且文件的初始大小为10M。可以使用mysql命令“show variables like ‘innodb_data_file_path’;”,查看文件的属性(文件名、文件的初始大小、自动增长等属性信息)。
独享空间
如果将全局系统变量InnoDB_file_per_table的位置设置为ON(InnoDB_file_per_table)的默认值为OFF),那么以后再创建InnoDB存储引擎的新表时,这些标的数据信息、索引擎将保存到独享表空间文件中。
独享空间的使用
首先,首先使用mysql命令“show variables like ‘innodb_file_per_table’;”查看该全局系统变量的值,然后,使用mysql命令“set @@global.innodb_file_per_table=ON;”将全局系统变量(@@global)中的参数InnoDB_file_per_table设置为开启。接着,使用mysql命令“show variable like ‘innodb_file_per_table’;”查看该全局系统变量的值。
备注:重做日志信息采用轮循策略依次记录在ib_logfile0与ib_logfile1重做日志文件中。无论是MyISAM存储引擎的表,还是InnoDB存储引擎的表,都必须唯一对应一个frm表结构文件。
如果数据库中还包含有InnoDB表,在备份数据库时,不仅需要将整个数据库目录复制一份,还需要复制共享表空间文件ibdata1,以及重做日志文件ib_logfile0与ib_logfie1.
删除表
Drop table table_name,即可删除名为table_name的表。
MyISAM 与InnoDB引擎,布布扣,bubuko.com
标签:database 配置文件 engines commit foreign
原文地址:http://guyang.blog.51cto.com/9122948/1533685