MYSQL 浅谈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掉。 参考文件:《高性能MYSQL》

时间: 2024-09-15 01:45:48

MYSQL 浅谈MyISAM 存储引擎的相关文章

MYSQL 浅谈MyISAM 存储引擎_Mysql

思维导图      介绍          mysql中用的最多存储引擎就是innodb和myisam.做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对<高性能MYSQL>书中提到的myisam的理解,请大家多多指教.    特点   > 不支持事务     证明如下:      >> 表记录:t2表的engine是myisam.       >> 操作 注意:如果你在数据库进行事务操作,但是事务无法成功,你就要看你的表引擎了,看这种引擎是否

【Mysql 学习】MyISAM存储引擎(一)。

MyISAM是默认存储引擎. 每个MyISAM在磁盘上存储成三个文件. 第一个文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义. 数据文件的扩展名为.MYD (MYData). 索引文件的扩展名是.MYI (MYIndex). 想要用一个MyISAM表格,可以使用如下语句: CREATE TABLE t (i INT) ENGINE = MYISAM; 一般地,ENGINE选项是不必要的:除非默认已经被改变了,MyISAM是默认存储引擎. 如下是MyISAM存储引擎的一些特征

MySQL的浅谈InnoDB存储引擎

InnoDB是事务安全的存储引擎,设计上借鉴了很多Oracle的架构思想,一般而言,在OLTP应用中,InnoDB 应该作为核心应用表的首先存储引擎.InnoDB是由第三方的Innobase Oy公司开发,现已被Oracle收购,创始 人是Heikki Tuuri,芬兰赫尔辛基人,和著名的Linux创始人Linus是校友. InnoDB体系架构 上面是InnoDB的一个简图,简单来说,InnoDB是由一系列后台线程和一大块内存组成. 后台线程 默认情况下,InnoDB的后台线程有7个 -- 4个

【Mysql 学习】MyISAM存储引擎(二)。

MyISAM表的存储格式 1. 静态(固定长度)表特征 2. 动态表特征 3. 已压缩表特征   MyISAM支持三种不同存储格式.其中两个(固定格式和动态格式)根据正使用的列的类型来自动选择.第三个,即已压缩格式,只能使用myisampack工具来创建.    当CREATE或ALTER一个没有BLOB或TEXT列的表,可以用ROW_FORMAT表选项强制表的格式为FIXED或DYNAMIC.这会导致CHAR和VARCHAR列因FIXED格式变成CHAR,或因DYNAMIC格式变成VARCHA

MySQL的MyISAM存储引擎修复及修改最大文件大小

前两天生产库上出现了一个不大不小的故障,关于MySQL 的存储引擎问题. 这个故障所涉及到的是MySQL 4.1.20的版本MyISAM存储引擎,一张1千多万的表. 故障现象: 在做简单的SELECT查询的时候没有问题,但是做连接查询或者其他复杂查询的时候就报错了:具体的错误代码由于时间的问题被遗忘了.在系统日志中记录的错误如下图: 从错误信息中可以猜到了大概:存储引擎出了问题. 进到相应的数据库目录下,查看一下数据文件大小,有4G大小,这就不奇怪了. MySQL 4版本的数据库创建的表默认最大

MySQL数据库MyISAM存储引擎转为Innodb的方法_Mysql

mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Innodb.步骤如下: 1.导出CentOS数据库的表结构 复制代码 代码如下: mysqldump -d -uxxx -p centos > centos_table.sql 其中-d参数表示不导出数据,只导出表结构 2.替换centos_table.sql里的MyISAM为INNODB 复制代码 代码如下:

mysql逻辑架构及存储引擎简介

  MySQL逻辑架构: 并发控制:由锁实现 读锁:也叫共享锁,读锁互相不阻塞.A加锁表后A,b,c,d都能读该表但不能写该表. 写锁:也叫排他锁,写锁相互阻塞.A加排他锁后,其他线程不能读写该表. 锁粒度: 表锁:锁一个表,并发粒度小.代表存储引擎MyISAM 行锁:锁一行数据,并发粒度大,并发操作表性能好.代表存储引擎InnoDB.锁粒度小系统对锁的开销也大. 假如给一个表加读锁,那么其他线程也无法对该表进行写操作了,如果是加行锁那么该线程只阻塞只对这一行数据的读写,表中其他行的数据其他线程

MySQL数据库三种常用存储引擎特性对比_Mysql

MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系. 由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景. MyISAM 特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业务场景不能使用 表级锁定:其锁定机制是表级索引,这虽然可以让锁定的实现成本很小但是也同时大大降低了其并发性能 读写互相阻塞:不仅会在写入的时候阻塞读取,M

[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型

[小白技巧]如何在Linux上检查MySQL数据表的存储引擎类型 数据库表的类型? MySQl主要使用两种存储引擎:MyISAM 和 Innodb.MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback).当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎).如果没有选择,你就会使用与预设置的默认引擎. 如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到. 方法一 如果你可以访问phpMyAdmin