自己对MyISAM存储引擎的理解

介绍

mysql中用的最多存储引擎就是innodb和myisam。做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教。

特点

> 不支持事务

证明如下:

>> 表记录:t2表的engine是myisam。

>> 操作

注意:如果你在数据库进行事务操作,但是事务无法成功,你就要看你的表引擎了,看这种引擎是否支持事务。

>> 下面请看innodb中的事务操作

> 存储结构:数据文件(.MYD),索引文件(.MYI)和结构文件(.frm)

>> 特点:可以在不同服务器上拷贝数据文件和索引文件。

> 加锁和并发

加锁:对整张表进行加锁,而不是行。

并发:在读数据的时候,所有的表上都可以获得共享锁(读锁),每个连接都不互相干扰。

在写数据的时候,获得排他锁,会把整个表进行加锁,而其他的连接请求(读,写请求)都处于等待中。

> 修复表

>> 查看表状态

>> check一下表,看表是否正常。

>> repair(修复) 一下表。呵呵,我的这张表是正常的。

> 列索引。可以基于BLOB或TEXT类型列的前500个字符,创建相关索引。

>> 给t2表添加一个text列。

>> 表结构如下

>> 为content字段添加全文索引

>> 查看表的索引情况

> 延迟更新索引。MYISAM 默认把DELAY_KEY_WRITE开启, 整个选项是MYISAM引擎独有的。

注意:在查询结束后,不会将索引的改变数据写入磁盘,而是改变内存中的索引数据。只有在清理缓冲区或关闭表时才将索引块转储到磁盘。

> 压缩表

>> 查看数据文件位置

>> 压缩文件

总结

myisam在索引层和压缩层的卓越贡献,所以我们经常把myisam用于slave层,供客户端去读取。而myisam在写库操作的时候会产生排他锁,如果写操作一直占用的话,那么其他连接请求一直就处于等待中,从而造成堵塞,甚至能把服务器dang掉。

时间: 2024-08-24 21:15:19

自己对MyISAM存储引擎的理解的相关文章

mysql中索引,触发器,事务,存储引擎的理解

1.索引:作用于表中的某列,并将其进行排序,有助于快速地进行查询. 索引是对数据库表中一个或多个列的值进行排序的数据结构,是用于提高在数据库表中访问数据的速度的数据库对象.其实索引相当于一本书的目录,如果没有索引,要想在数据库中查找某一特定的值就需要遍历整个数据库表,但是有了索引之后就可以在索引当中查找,有助于更快地获取信息: 索引可分为聚集索引和非聚集索引: 聚集索引:是按照数据存放的物理位置为顺序的: 非聚集索引中,表数据存储顺序与索引顺序无关:一张表上只能创建一个聚集索引,因为真实数据的物

第二课——解析mysqldump命令和mysqlbinlog命令+innodb和Myisam存储引擎简介

环境说明 mysql版本:Percona-Server-5.6.30 IP:10.7.15.167 端口:3306 安装目录:/httx/run/mysql 数据目录:/httx/run/mysql/data/ mysqldump的常用参数 mysqldump测试--–研究加–single_transaction参数的区别 开启general_log日志,跟踪mysql操作日志 (general_log日志可以方便跟踪所有mysql上的操作,但是生产环境不建议开启,占用资源.消耗内存) mysq

mysql InnoDB 和 Myisam 存储引擎的区别

1. InnoDB 支持事物,Myisam 不支持事物 2. InnoDB 是行级锁,Myisam 表级锁 3. InnoDB 不支持全文索引,Myisam 支持全文索引,但不支持外键 4. InnoDB 在磁盘上是两个文件,Myisam 是三个文件 5 myISAM管理非事务表.它提供高速存储和检索,以及全文搜索能力.如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择 6InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务支持.如果应用中需要执行大量的INSER

MyISAM存储引擎

每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩展名为.MYD (MYData).索引文件的扩展名是.MYI (MYIndex). 要明确表示你想要用一个MyISAM表格,请用ENGINE表选项指出来: CREATE TABLE t (i INT) ENGINE = MYISAM; 如下是MyISAM存储引擎的一些特征: ·         所有数据值先存储低字节.这使得数据机和操作系统分离.二进制轻便性的唯一要求是

MySQL数据库MyISAM存储引擎转为Innodb

MySQL数据库MyISAM存储引擎转为Innodb 之前公司的数据库存储引擎全部为MyISAM,数据量和访问量都不是很大,所以一直都没什么问题.但是最近出现了MySQL数据表经常被锁的情况,直接导致了用户连接网站时超时而返回502,于是决定把存储引擎转为Innodb的,以解决MyISAM的表锁问题.下面将操作步骤记录一下. 1.导出centos数据库的表结构 mysqldump -d -uxxx -p centos > centos_table.sql 其中-d参数表示不导出数据,只导出表结构

innodb和myisam存储引擎插入速度

--innodb和myisam存储引擎插入速度 ------------------------------------2014/05/21 MySQL 5.6 全部默认设置,插入数据9999条,性能一般的虚拟机. mysql> delete from test; Query OK, 10000 rows affected (0.54 sec) mysql> alter table test engine=myisam; Query OK, 0 rows affected (0.15 sec)

MySQL之MyISAM存储引擎压缩表

一.介绍 MySQL的MyISAM存储引擎支持压缩表空间,压缩后的表空间会减少,但是压缩后的表是只读的,不能插入和更新数据,如果需要更新,则需要解压后更新,再压缩 . 二.案例 1.创建数据库,创建表并指定存储引擎为MyISAM,字符集为utf8 create database myisamdb; use myisamdb; create table myisam (id int unsigned auto_increment primary key, name varchar(20) not

(MariaDB/MySQL)MyISAM存储引擎读、写操作的优先级

MariaDB/MySQL中使用表级锁的存储引擎(例如MyISAM.Aria(MariaDB对MyISAM引擎的改进,前身是MyISAM))在读(select).写操作(insert.delete.update.replace)上有优先级的概念.默认情况下,写操作的优先级高于读操作.注:不适用于InnoDB存储引擎. 以MyISAM为例.当有进程正在写MyISAM表的时候,又有新的读操作.写操作出现,则会先执行完所有的写操作,等写完后才会读表.实际上并非总是先执行完所有写操作,因为有系统变量ma

InnoDB和MyISAM存储引擎的区别

InnoDB存储引擎 InnoDB是一个事务型的存储引擎,设计目标是处理大数量数据时提供高性能的服务,它在运行时会在内存中建立缓冲池,用于缓冲数据和索引. InnoDB优点 1.支持事务处理.ACID事务特性: 2.实现了SQL标准的四种隔离级别: 3.支持行级锁和外键约束: 4.可以利用事务日志进行数据恢复. InnoDB缺点 1.不支持FULLTEXT类型的索引,因为它没有保存表的行数,当使用COUNT统计时会扫描全表. InnoDB适用场景 1.需要事务的操作: 2.更新数据需要使用行级锁