mysql引擎接口_Mysql存储引擎MyISAM和InnoDB

存储引擎介绍Mysql中的数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制,索引技巧,锁定水平。并且最终提供广泛的不同的功能和能力。通过选则不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能,这些不同的技术以及配套的相关功能在mysql中被称作存储引擎

在熟悉存储引擎之前,先来了解mysql的体系结构:1)Connectors:连接组件,相当于驱动,针对不同的语言会有不同的驱动,例如针对PHP要安装php驱动。驱动要到mysql官网上去找,衔接mysql与开发语言的桥梁

2)Connection  pool :连接池组件,mysql为了加大前台请求进程与后台服务的连接,相当于客服,为了用户体验不止一个组件

3)Enterprise Management Service&Utilities:管理服务和控制组件,

4)SQL Interface:SQL接口组件,支持服务进行各种增,删,改,查操作

5)Parser:查询分析器组件,支持进行各种条件查询,比如升降序查询

6)Optimizer:优化器组件

7)Caches&Buffers:缓存组件

8)Pluggable Storage Engines:插件式存储引擎,支持热插拔(即插即用)

9)File System:文件系统

10)File&Logs:存储文件和日志

b64ea4bc638709eea21a95827731238c.png

Mysql系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会先传输到存储引擎,然后按照各个存储引擎的存储格式进行数据存储。使用这种存储引擎的优点在于,仅仅需要提供特殊应用所需的特性即可;数据库中的系统开销最小;具有更有效和更高效的数据库性能

e3b04bc04342799377bfde3f04b1c9d5.png

MyISAM的特点及介绍MyISAM   MYSQL5.5以前支持的默认存储引擎

1)查询频率较高的场合:商城网站

2)不支持事务

3)表锁定   读取与写入互阻塞e9046952c798a4517f27f05d0d83c418.png

b33d586b0726673e6dca3af944c8fc69.png

ceafa439a4481aa09a29592a26d28411.png

54c3e9e9091f31fc3410aafdb2736a32.png

InnoDB特点及介绍InnoDB存储引擎不同于MyISAM存储引擎,InnoDB  mysql5.7默认支持存储引擎f2fec387ef87fb7b7ed24212b6fa5c42.png

719077d535a6c27f2734ce4a2b9c26f5.png

e9a6daa974e4a5a4a858cf865904bdae.png

查看数据库可配置的存储引擎类型使用show engines;可以查看Mysql默认使用的存储引擎,以及系统支持的其他存储引擎mysql> show engines;

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

| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |

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

| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |

|InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |

| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |

| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |

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

8 rows in set (0.01 sec)

可看到默认使用的存储引擎为InnoDB

查看表正在使用的存储引擎1)使用show table status命令可以查看表正在使用的存储引擎,

show table status from 库名where name='表名';

mysql> show table status from abc where name='info';

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

| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time | Check_time | Collation       | Checksum | Create_options | Comment |

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

| info |InnoDB |      10 | Compact    |    1 |          16384 |       16384 |               0 |            0 |  10485760 |           NULL | 2018-09-07 14:33:07 | NULL        | NULL       | utf8_general_ci |     NULL |                |         |

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

1 row in set (0.00 sec)

可看到info表使用的存储引擎为InnoDB

2)使用show create命令也可以查看表正在使用的存储引擎

use 库名;     //先进入数据库

show create table 表名;

mysql> use abc;

Database changed

mysql> show create table info;

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

| Table | Create Table                                                                                                           |

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

| info  | CREATE TABLE `info` (

`id` int(11) DEFAULT NULL,

`name` char(18) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

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

1 row in set (0.00 sec)

配置存储引擎为所需要的类型b7a26713c0b1e7bf2e7c11edfef69cfa.png

(1)使用alter table命令修改alter table 表名 engine=存储引擎

mysql> alter table info engine=MyISAM;

Query OK, 1 row affected (0.02 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> show create table info;

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

| Table | Create Table                                                                                                           |

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

| info  | CREATE TABLE `info` (

`id` int(11) DEFAULT NULL,

`name` char(18) DEFAULT NULL

) ENGINE=MyISAMDEFAULT CHARSET=utf8 |

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

1 row in set (0.00 sec)

(2)修改Mysql的配置文件my.cnf,可以指定default-storage-engine选项设置默认的存储引擎vim /etc/my.cnf

//省略内容

[mysqld]

default-storage-engine=MyISAM

//省略内容

这里指定默认存储引擎是MyISAM,需要重新启动Mysql服务器,

以后创建的新表存储引擎就会改变,但是之前创建的表的存储引擎不会改变。

mysql> create table xinxi(id int ,score decimal(5,2));

Query OK, 0 rows affected (0.03 sec)

mysql> show create table xinxi;

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

| Table | Create Table                                                                                                                 |

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

| xinxi | CREATE TABLE `xinxi` (

`id` int(11) DEFAULT NULL,

`score` decimal(5,2) DEFAULT NULL

) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

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

1 row in set (0.00 sec)

(3)使用create table创建表时用engine指定存储引擎,会使用指定的存储引擎。现在数据库的默认引擎是MyISAM,但创建新表时指定使用InnoDB,则新表的存储引擎就是InnoDBmysql> create table family(name char(10),chengwei char(10)) engine=InnoDB;

Query OK, 0 rows affected (0.07 sec)

mysql> show create table family;

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

| Table  | Create Table                                                                                                                    |

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

| family | CREATE TABLE `family` (

`name` char(10) DEFAULT NULL,

`chengwei` char(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

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

1 row in set (0.00 sec)

(4)批量修改多个表的存储引擎mysql5.5版本之前(包括5.5)有这个命令,可以这样操作。mysql5.7以后就不能这么操作了mysql_convert_table_format --user=root --password=密码 --socket=/路径/mysql.sock --engine=引擎 库名 表名

mysql_convert_table_format --user=root --password=abc123 --socket=/home/mysql/mysql.sock --engine=MyISAM test family info老版本5.5默认存储引擎为MyISAM 若要批量修改为InnoDB 则需修改命令本身的代码

具体步骤如下:

yum install perl-DBI -y

yum install perl-DBD-MySQL -y

vim /usr/local/mysql/bin/mysql_convert_table_format         //修改

//32行修改(修改后的内容为带加粗的部分)

"e|engine|type=s" => $opt_engine

mysql_convert_table_format --user=root --password=abc123 --socket=/home/mysql/mysql.sock --engine=InnoDB test family info

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值