MySQL 存储引擎

和大多数数据库不不同,MySQL中有一个存储引擎的概念,针对不不同的存储需求可以选择最优的存储引擎。
插件式存储引擎是MySQL数据库最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据、是否使用事务等。
MySQL默认支持多种存储引擎,以适用于不不同领域的数据库应用需要,用户可以通过选择使用不不同的存储引擎提高应用的效率,提供灵活的存储,用
户甚至可以按照自己的需要定制和使用自己的存储引擎,以实现最大程度的可定制性。
MySQL5.0 支持的存储引擎包括 MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、
FEDERATED等,其中 InnoDB 和 BDB 提供事务安全表,其他存储引擎都是非事务安全表。
创建新表时如果不不指定存储引擎,那么系统就会使用默认存储引擎
MyISAM
不支持事物,只支持表级锁
不支持外键
支持B树索引、全文FULLTEXT索引、空间索引
支持表压缩
性能好,适用于查询较多的(数据仓库)的情况
InnoDB
支持事物,保证多个操作同时成功执行
支持行级锁
支持使用表空间(Table Space)
支持raw磁盘设备(无文件系统的设备)
适用于在线事物处理系统(在线交易系统OLTP)
MAR_MYISAM
将两个或两个以上的MYISAM表(表结构要一致)合并成一个表
CSV
使用文本的方式保存表
数据库移植时使用
ARCHIVE
用于数据挖掘
MEMORY
所有的表存储在内存中
用于创建临时表
不支持事物、分布式事物、检查
BLACKHOLE
黑洞数据库,只能存,但是不保存
用于MySQL的主从复制架构
BLACKHOLE 引擎是一个“黑洞洞”引擎,写入 BLACKHOLE 表的数据并不不会写回到磁盘上,
BLACKHOLE 表永远都是一个空表,INSERT/UPDATE/
DELETE操作仅仅在Binlog中记录事件。

不建议使用混合存储引擎,即所有对象的存储引擎要一致

MySQL5.5 之前的默认存储引擎是 MyISAM,5.5之后改为了了 InnoDB。
如果要修改默认的存储引擎,可以在参数文件中设置default-table-type。
MySQL5.5 之前的
show variables like 'table_type';
5.5之后的版本
mysql> show variables like "%engine%";
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| disabled_storage_engines | |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
4 rows in set (0.02 sec)

mysql>
mysql> show engines; 查看引擎的种类
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
mysql> show variables like "have%";
+------------------------+----------+
| Variable_name | Value |
+------------------------+----------+
| have_compress | YES |
| have_crypt | YES |
| have_dynamic_loading | YES |
| have_geometry | YES |
| have_openssl | DISABLED |
| have_profiling | YES |
| have_query_cache | YES |
| have_rtree_keys | YES |
| have_ssl | DISABLED |
| have_statement_timeout | YES |
| have_symlink | YES |
+------------------------+----------+
11 rows in set (0.01 sec)

mysql>
修改表的引擎
mysql> ALTER TABLE ying ENGINE=MyISAM;
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0

查看表的引擎信息
mysql> show create table ying\G;
*************************** 1. row ***************************
Table: ying
Create Table: CREATE TABLE `ying` (
`id` tinyint(3) unsigned DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值