当前位置: 澳门新濠3559 > 数据库 > 正文

MySQL服务器能够与存储引擎进行通信,YES表示当前

时间:2019-11-09 19:33来源:数据库
本文总结了MySQL下查看、修改存储引擎的一些方法。测试、验证环境为MySQL 5.6,如有差异,请以实际版本为准 MySQL修改默认存储引擎的实现方法,mysql修改存储引擎 mysql存储引擎: MySQ

本文总结了MySQL下查看、修改存储引擎的一些方法。测试、验证环境为MySQL 5.6 ,如有差异,请以实际版本为准

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

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 statusG;

一般安装系统默认是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修改默认存储引擎的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持帮客之家。

mysql存储引擎: MySQL服务器采用了模块化风格,各部分之间保持相对独立,尤其体现在...

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎。如果你要使用全文索引,那必须使用myisam。 INNODB的实用性,安全性,稳定性更高但是效率比MYISAM稍差,但是有的功能是MYISAM没有的。修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高。

 

查看数据表的状态

1:查看MySQL的存储引擎信息

复制代码 代码如下:

 

SHOW TABLE STATUS FROM sites WHERE NAME='site'; 
SHOW TABLE STATUS FROM db_name WHERE NAME='table_name';   

MySQL服务器能够与存储引擎进行通信,YES表示当前版本支持这个存储引擎。1.1 使用show engines命令。

更改表的引擎

澳门新濠3559 1

复制代码 代码如下:

Support列, YES表示当前版本支持这个存储引擎, DEFAULT表示该引擎是默认的引擎。NO表示不支持该存储引擎。如下所示,InnoDB是默认的存储引擎。

alter table table_name engine=innodb; 
alter table table_name engine=myisam; 

 

您可能感兴趣的文章:

  • MySql数据引擎简介与选择方法
  • MySQL InnoDB和MyISAM数据引擎的差别分析
  • MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
  • Mysql 开启Federated引擎的方法
  • mysql更改引擎(InnoDB,MyISAM)的方法
  • MySQL存储引擎总结
  • MySQL Memory 存储引擎浅析
  • 浅谈MySQL存储引擎选择 InnoDB与MyISAM的优缺点分析
  • mysql下修改engine引擎的方法
  • mysql学习笔记之数据引擎

1.2 可以查看系统变量default_storage_engine或storage_engine

 

     1:default_storage_engine 表示永久表(permanent tables)的默认存储引擎。

     2:default_tmp_storage_engine 表示临时表的默认存储引擎。

     storage_engine这个系统变量不推荐使用,它已经被系统变量default_storage_engine替代了。

mysql> show variables like '%storage_engine%';

+----------------------------+--------+

| Variable_name              | Value  |

+----------------------------+--------+

| default_storage_engine     | InnoDB |

| default_tmp_storage_engine | InnoDB |

| storage_engine             | InnoDB |

+----------------------------+--------+

3 rows in set (0.01 sec)

 

mysql> 

澳门新濠3559 2

 

2:如何修改MySQL的默认存储引擎?

 

2.1 修改my.cnf,在配置文件里面增加参数default-storage-engine,然后重启数据库服务。

[mysqld]

default-storage-engine=MyISAM

 

然后检查默认存储引擎,就会看到MyISAM为默认存储引擎了。

澳门新濠3559 3

 

 

2.2 使用命令修改系统变量(system variables)

 

澳门新濠3559 4

 

注意,这个系统变量default_storage_engine是BOTH(全局和临时),而且可以动态修改。但是要注意,即使你修改了系统变量default_storage_engine,重启过后就会失效,如果你要永久修改,最好在my.cnf配置文件里面也设置default-storage-engine的值。

 

3:如何查看表使用的存储引擎?

 

查看表所用的存储引擎,有下面几种方法:

 

澳门新濠3559,3.1 查询information_schema.TABLES

mysql> SELECT TABLE_SCHEMA, 

    ->        TABLE_NAME, 

    ->        TABLE_TYPE, 

    ->        ENGINE 

    -> FROM   information_schema.TABLES 

    -> WHERE  TABLE_NAME = 'TEST'; 

+--------------+------------+------------+--------+

| TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE |

+--------------+------------+------------+--------+

| gsp          | TEST       | BASE TABLE | InnoDB |

+--------------+------------+------------+--------+

1 row in set (0.00 sec)

 

mysql> 

澳门新濠3559 5

 

3.2 使用SHOW CREATE TABLE TEST G命令。

 

mysql> SHOW CREATE TABLE TEST G;

*************************** 1. row ***************************

       Table: TEST

Create Table: CREATE TABLE `TEST` (

  `ID` int(11) DEFAULT NULL,

  `COL1` varchar(6) DEFAULT NULL,

  `COL2` varchar(6) DEFAULT NULL,

  `COL3` varchar(6) DEFAULT NULL,

  `COL4` varchar(6) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

 

ERROR: 

No query specified

 

mysql> 

澳门新濠3559 6

 

3.3 SHOW TABLE STATUS

mysql> SHOW TABLE STATUS WHERE Name='TEST';

ERROR 1046 (3D000): No database selected

mysql> 

mysql> 

mysql> use gsp;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> SHOW TABLE STATUS WHERE Name='TEST';

 

如上所示,这种写法必须制定数据库,否则,你只能使用下面语法

SHOW TABLE STATUS [{FROM | IN} db_name]

[LIKE 'pattern' | WHERE expr]

mysql> SHOW TABLE STATUS FROM gsp WHERE Name='TEST';

 

4:如何修改相关表的存储引擎?

 

修改表的存储引擎非常简单,语法如下所示

ALTER TABLE my_table ENGINE = InnoDB;

mysql> ALTER TABLE TEST ENGINE=MyISAM;

Query OK, 0 rows affected (0.02 sec)

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> SHOW CREATE TABLE TEST G;

*************************** 1. row ***************************

       Table: TEST

Create Table: CREATE TABLE `TEST` (

  `ID` int(11) DEFAULT NULL,

  `COL1` varchar(6) DEFAULT NULL,

  `COL2` varchar(6) DEFAULT NULL,

  `COL3` varchar(6) DEFAULT NULL,

  `COL4` varchar(6) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

 

ERROR: 

No query specified

 

mysql> 

 

5:创建表的时候如何指定存储引擎。

 

创建表的时候,如果要指定存储引擎,只需要设置参数ENGINE即可。非常简单。

 

mysql> CREATE TABLE TEST1 (ID INT) ENGINE=InnoDB;

Query OK, 0 rows affected (0.02 sec)

 

mysql>  CREATE TABLE TEST2 (ID INT) ENGINE=MyISAM;

Query OK, 0 rows affected (0.00 sec)

 

参考资料:

 

编辑:数据库 本文来源:MySQL服务器能够与存储引擎进行通信,YES表示当前

关键词: