下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

设置储存引擎

作者:课课家教育     来源: http://www.kokojia.com点击数:651发布时间: 2016-11-13 09:00:03

标签: mysqlmysql教程mysql数据库

  MySQL中的数据用各种不同的技术存储在文件或者内存中,而每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。我们可以通过选择不同技术,获得额外的速度或者功能,来改善应用的整体功能。目前,MySQL数据库有两种常见的储存引擎,Myisam以及Innodb。要是建表时没有显示声明,那就默认用Innodb,不一样的数据库引擎在数据储存索引还有管理上各有优劣。

  (一)设置表储存引擎

  在建表时,指定表储存引擎设置,如下:

设置储存引擎_mysql_mysql教程_mysql数据库_课课家

  (二)简析储存引擎特征

  在ubuntu当中,默认的数据库文件是存放在“/var/lib/mysql/”,这就需要root权限才可以进入,本文创建的数据名为“kekejia.com”,所以表文件存放在这个目录的“kekejia.com”下;

  要是Windows环境,数据库文件的默认目录就是安装目录下的data文件,myisam引擎的表数据则存在次级目录mysql中的数据库名称对应文件下;

  我们首先进入“/var/lib/mysql/qingsword_com/”文件夹,就能看到很多不同储存引擎的表数据文件;

  (1)Myisam储存引擎

  在创建Myisam储存引擎表时,数据库目录下就会多出三个后缀为“.frm”、“.MYD”、“.MYI”的文件:

  .frm储存表结构为framework,包括列名称,数据类型,属性等。

  .MYD储存表数据为MysqlData,每一条记录的数据都存储在这里。

  .MYI索引文件mysqlindex,它储存了索引信息。

  一般,完整的“Myisam”引擎表都包含以上三个后缀文件,如以上创建的t31生成了三个文件"t31.frm"、"t31.MYD"以及"t31.MYI"。

设置储存引擎

  (2)Innodb储存引擎

  Innodb为MySQL5后默认的储存引擎,Innodb储存方式由“innodb_file_per_table”参数决定,能在my.cnf中[mysqld]下设置,要是没有就可以追加;

  所以在innodb_file_per_table=0时,创建的新表只在对应数据库文件夹中生成一个后缀为".frm"的文件,全部表数据共享相同文件“ibdata1”,默认位置为“/var/lib/mysql/ibdata1”;

  在innodb_file_per_table=1时,创建新表就会生成两个后缀为".ibd"和".frm"的单独文件。并且,frm文件同Myisam引擎,储存的是表结构信息,idb文件储存数据、索引以及插入缓冲,然而,撤销信息,系统事务信息,二次写缓冲等依然存放在ibdata1文件,如以上的t30生成"t30.idb"以及"t30.frm"两个文件,就说明默认情况下用了该配置;

  测试后就会发现ubuntu中MySQL5.6.25默认用了Innodb,并且innodb_file_per_table=1,就算my.cnf文件没有配置该参数;

  以下为查看目前Innodb使用的储存方式以及通过修改“innodb_file_per_table”参数改变Innodb储存的方式:

改变Innodb储存的方式

  (3)两种储存引擎性能比较

 两种储存引擎性能比较

  移植性:myisam储存只要把数据库目录拷贝,就是整个数据库的备份,在数据库移动方面较为简单,而Innodb相对myisam移动就没那么容易,由于全部表数据都储存在一起,即使innodb_file_per_table=1,单独生成文件存放部分数据,依然有一部分数据存放在共享的ibdata1文件中的。

  安全:InnoDB拥有完善的日志功能,就会更安全,还可以根据日志恢复数据,Myisam就没有,InnoDB只支持事务安全,但是不支持全文索引,InnoDB的锁机制可以实现行锁,然而,Myisam只可以实现表锁。

  总结:上面就是关于MySQL数据库有两种常见的储存引擎,Myisam以及Innodb的具体内容啦。要是大家对本教程有什么不明白的地方,欢迎咨询小编,希望可以帮助到大家哦。

赞(21)
踩(0)
分享到:
上一篇:字符集与乱码
华为认证网络工程师 HCIE直播课视频教程