欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL修改默认存储引擎的实现方法

程序员文章站 2022-10-15 09:35:12
mysql存储引擎: mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及mysql的索引管理。通过定义的api...

mysql存储引擎:

mysql服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在存储架构上。存储引擎负责管理数据存储,以及mysql的索引管理。通过定义的api,mysql服务器能够与存储引擎进行通信。目前使用最多的是myisam和innodb。innodb被oracle收购后,mysql自行开发的新存储引擎falcon将在mysql6.0版本引进。

myisam引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。myisam中,一个table实际保存为三个文件,.frm存储表定义,.myd存储数据,.myi存储索引。

innodb则是一种支持事务的引擎。所以的数据存储在一个或者多个数据文件中,支持类似于oracle的锁机制。一般在oltp应用中使用较广泛。如果没有指定innodb配置选项,mysql将在mysql数据目录下创建一个名为ibdata1的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的日志文件。

创建table时可以通过engine关键字指定使用的存储引擎,如果省略则使用系统默认的存储引擎:create table t (i int) engine = myisam;

查看系统中支持的存储引擎类型:

mysql> show engines;| engine | support | comment || myisam | yes | default engine as of mysql 3.23 with greatperformance | 

 | memory | yes | hash based, stored in memory, useful for temporarytables | 

 | innodb | default | supports transactions, row-level locking, andforeign keys | 

 | berkeleydb | no | supports transactions and page-level locking| 

 | blackhole | no | /dev/null storage engine (anything you write toit disappears) | 

 | example | no | example storage engine | 

 | archive | yes | archive storage engine | 

 | csv | no | csv storage engine | 

 | ndbcluster | no | clustered, fault-tolerant, memory-based tables| 

 | federated | no | federated mysql storage engine | 

 | mrg_myisam | yes | collection of identical myisam tables | 

 | isam | no | obsolete storage engine |12 rows in set (0.00 sec) 

标准安装程序中只提供部分引擎的支持,如果需要使用其他的存储引擎,需要使用源代码加不同的参数重新编译。其中default表明系统的默认存储引擎,可以通过修改配置参数来变更:

default-storage-engine=myisam

查看某个存储引擎的具体信息

mysql> show engine innodb status\g;

一般安装系统默认是innodb

default-storage-engine=innodb

1.可以在启动数据库服务器时在命令行后面加上–default-storage-engine或–default-table-type选项。

2.更灵活的方式是在随mysql服务器发布同时提供的mysql客户端时指定使用的存储引擎。最直接的方式是在创建表时指定存储引擎的类型,向下面这样:

create table mytable (id int, titlechar(20)) engine = innodb

修改表的存储引擎:

alter table enginetest engine = innodb;

修改默认存储引擎:

在mysql配置文件(linux下为/etc/my.cnf),在mysqld后面增加default-storage-engine=innodb即可。

但是如果表建立的时候是myisam,要更改整个数据库表的存储引擎,一般要一个表一个表的修改,比较繁琐,可以采用先把数据库导出,得到sql,把myisam修改成innodb,再导入的方式。

以上这篇mysql修改默认存储引擎的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。