首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 修改myisam

基础概念

MySQL 是一个关系型数据库管理系统,而 MyISAM 是 MySQL 中的一种存储引擎。MyISAM 引擎提供了较高的插入和查询速度,但不支持事务处理和外键约束。由于其简单性和性能优势,MyISAM 在某些应用场景中仍然被广泛使用。

相关优势

  1. 高性能:MyISAM 引擎在读取操作上通常比其他存储引擎(如 InnoDB)更快。
  2. 占用空间小:MyISAM 表通常比 InnoDB 表占用更少的磁盘空间。
  3. 全文索引:MyISAM 支持全文索引,适合于全文搜索应用。

类型

MyISAM 引擎主要有以下几种类型:

  1. 静态表:所有字段都是固定长度的。
  2. 动态表:字段长度可变,存储空间会根据实际数据长度动态分配。
  3. 压缩表:通过压缩算法减少磁盘空间占用。

应用场景

MyISAM 引擎适用于以下场景:

  1. 读取密集型应用:如数据仓库、日志系统等。
  2. 全文搜索:MyISAM 的全文索引功能使其适合于全文搜索应用。
  3. 不支持事务的应用:由于 MyISAM 不支持事务,因此不适合需要事务处理的应用。

修改 MyISAM 表

在 MySQL 中修改 MyISAM 表通常涉及以下几个方面:

  1. 修改表结构:如添加、删除或修改字段。
  2. 修改表选项:如更改字符集、调整缓存大小等。

示例代码

假设我们要修改一个 MyISAM 表的结构,添加一个新的字段 email

代码语言:txt
复制
ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT NULL;

遇到的问题及解决方法

问题1:修改表结构时速度慢

原因:MyISAM 引擎在修改表结构时需要锁定整个表,导致其他操作无法进行。

解决方法

  1. 使用 ALGORITHM=INPLACE:尽量减少锁定时间。
  2. 使用 ALGORITHM=INPLACE:尽量减少锁定时间。
  3. 分批修改:如果表数据量很大,可以考虑分批修改,减少单次操作的数据量。

问题2:修改表选项时遇到错误

原因:某些表选项可能不支持在线修改,或者需要特定的权限。

解决方法

  1. 检查权限:确保你有足够的权限修改表选项。
  2. 离线修改:如果在线修改失败,可以尝试离线修改,即先备份表数据,然后删除表,再重新创建表并导入数据。

参考链接

通过以上信息,你应该对 MySQL 中的 MyISAM 引擎及其修改操作有了更全面的了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL Innodb和Myisam

InnoDB 使用日志先行策略,将数据修改先在内存中完成,并且将事务记录成重做日志(Redo Log),转换为顺序IO高效的提交事务。...的操作系统,特别是它对fsync()系统调用的支持 不间断电源 (UPS) 保护运行 MySQL 服务器和存储 MySQL 数据的所有计算机服务器和存储设备的电源 备份策略,例如备份的频率和类型以及备份保留期...2、.frm 文件 MySQL 将表的数据字典信息存储在数据库目录中的 .frm 文件中。与其他 MySQL 存储引擎不同, InnoDB它还在系统表空间内自己的内部数据字典中对有关表的信息进行编码。...,仍然可能会损坏表: mysqld的进程在写中间被杀害 发生意外的计算机关机 硬件故障 正在使用外部程序(例如 myisamchk)来修改同时由服务器修改的表 MySQL 或MyISAM 代码中的软件错误...MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用 InnoDB支持外键,MyISAM不支持 MyISAM是默认引擎,InnoDB需要指定 InnoDB不支持FULLTEXT

1.7K20

MySQL存储引擎 MyISAM 介绍

MyISAM是MySQL 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎。...每个MyISAM在磁盘上存储成3个文件,文件名都和表名相同,扩展分别是: frm(存储表定义) MYD(MYdata 存储数据) MYI( MYIndex 存储索引) 数据文件和索引文件可以放置在不同的目录...检查表的健康状态   表可能会损坏,原因多种多样,check table对MYISAM和InnoDB表都有作用,如检查有异常使用(repair table表名;)来修复。...MYISAM表3种不同的存储格式   3.1 静态(固定长度)表, 动态表, 压缩表。 其中静态表是默认的存储格式,字段都是非变长字段,每个记录都是固定长度。...CREATE TABLE Myisam_char (NAME CHAR(10)) ENGINE=MYISAM; INSERT INTO Myisam_char VALUES('abcde'),('abcde

82920
  • MYSQL 浅谈MyISAM 存储引擎

    介绍        mysql中用的最多存储引擎就是innodb和myisam。...做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多指教。  ...MYISAM 默认把DELAY_KEY_WRITE开启, 整个选项是MYISAM引擎独有的。 ? 注意:在查询结束后,不会将索引的改变数据写入磁盘,而是改变内存中的索引数据。...总结  myisam在索引层和压缩层的卓越贡献,所以我们经常把myisam用于slave层,供客户端去读取。...而myisam在写库操作的时候会产生排他锁,如果写操作一直占用的话,那么其他连接请求一直就处于等待中,从而造成堵塞,甚至能把服务器dang掉。 参考文件:《高性能MYSQL》

    1.9K30

    MySQL存储引擎MyISAM与InnoDB

    MySQL支持插件式的表存储引擎,这种独有的插件式体系架构,让存储引擎有了依赖应用的多样性。其中较为知名的存储引擎为MyISAM与InnoDB....table status from school where name='info'; 或者: show create table info; 配置存储引擎的几种方式: 1、使用alter table命令修改...: (修改现有表的存储引擎) alter table info engine=MyISAM/InnoDB; //进入数据库操作 2、修改默认存储引擎: (针对后面新创建的表格起作用) #vim /etc.../my.cnf default-storage-engine=MyISAM/InnoDB      //在[mysql]服务栏下设置默认存储引擎 3、在创建表时指定使用的存储引擎种类: //在mysql...yum install perl-DBI perl-DBD-MySQL -y //安装操作运行库 默认情况下只能将已存在的InnoDB的存储引擎更改为MyISAM形式,若需要反过来更改需要更改命令执行脚本

    69120

    MySQL常用存储引擎之MyISAM

    MySQL5.5版本之前的默认存储引擎就是MyISAM 系统表 临时表(查询优化器建立的临时表) MyISAM存储引擎表由MYD和MYI组成 MyISAM的特性 并发性与锁级别 对于读写混合的并发性不会太好...(id int,c1 varchar(10))engine=myisam; # 需要通过engine指定引擎 cd /var/lib/mysql/test # test是你的库名字 库的位置一般都在你的安装路径下...yum的默认在/var/lib/mysql myIsam_352.sdi myIsam.MYD myIsam.MYI 存储数据信息 存储索引信息 回到mysql...myIsam values(1,'haha'); ERROR 1036 (HY000): Table 'myIsam' is read only 限制 版本<5.0的默认表大小为4Gb 如存储大表则需要修改...MAX_Rows和AVG_Row_LENGTH 修改会导致表重建 版本>5.0的默认表大小为256TB 适用场景 非事务型应用 只读类应用 空间类应用(例如GPS 利用空间函数)

    50110

    MySQL中Myisam、InnoDB碎片优化

    表类型为Myisam,已建立一个索引,所以应该是产生了大量碎片,使用 Optimize table 表名 优化后大小变为2.19M,少了很多, 同时可以看出该表上的索引建的多余,因为插入操作比查询操作要多很多...借此延伸下MYSQL中Myisam、InnoDB碎片优化方式: Myisam清理碎片 OPTIMIZE TABLE table_name InnoDB碎片优化 if you frequently delete...using ‘alter table’ without actually changing anything: ALTER TABLE foo ENGINE=InnoDB; This is what MySQL...什么是mysql碎片?怎样知道表的碎片有多大呢?....所以把 Optimize 命令放在程序中是不妥当的,不管设置的命中率多低,当访问量增大的时候,整体命中率也会上升,这样肯定会对程序的运行效率造成很大影响.比较好的方式就是做个 Script,定期检查mysql

    1.3K10

    MySQL 存储引擎 MyISAM 与 InnoDB 区别

    存储引擎 Storage engine:MySQL 中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。...其中,innodb为了保证事务日志这个“草稿”一定能无损地还原成正稿,还不能占用太多空间,事务日志需要有以下特点: 事务日志中一定保存了要写入的所有数据内容 事务日志只会把新事务追加在日志最后,而不会去修改之前的内容...• MyIASM 引擎(原本Mysql 的默认引擎):不提供事务的支持,也不支持行级锁和外键。MyISAM使用的是表级锁,也就意味着在对表中的数据进行修改时,需要对整个表进行加锁。...MEMORY 引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高 MyISAM 与 InnoDB 区别 MyISAM Innodb 存储结构 每张表被存放在三个文件: 所有的表都保存在同一个数据文...记录存储顺序 按记录插入顺序保存 按主键大小有序插入 外键 不支持 支持 事务 不支持 支持 锁支持(锁是避免 表级锁定 行级锁定、表级锁定,锁定力度 资源争用的一个机 小并发能力高 制,MySQL

    74230

    ⑩【MySQL】存储引擎详解, InnoDB、MyISAM、Memory。

    MySQL体系结构 MySQL体系结构: 连接层 最上层是一些客户端和连接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为每个安全接入的用户端验证它所具有的操作权限。...InnoDB、MyISAM、Memory对比、选择 ①InnoDB存储引擎 存储引擎 - InnoDB: InnoDB介绍: InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5...之后,InnoDB作为MySQL的默认存储引擎。...存储引擎 MyISAM存储引擎: MyISAM存储引擎是MySQL早期的默认存储引擎。...MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么适合选择MyISAM存储引擎。

    1.8K30

    MySQL引擎MyISAM和InnoDB区别详解

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。...不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。...InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。...MyISAM与InnoDB的区别是什么? 1、 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。...另外,任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

    48710

    MySQL存储引擎MyISAM和InnoDB的区别

    其实,面试官问他这个问题也不是随便问的,也是看了这位粉丝简历上写了熟练MySQL才提问的。...其实,对于MySQL,这位粉丝可能只是非常熟练地完成建库、建表、往数据库表中读写数据这些简单的操作而已,并没有去了解建表的原理。...MyISAM和InnoDB到底有什么区别呢? 1、MyISAM和InnoDB的区别 MySQL 5.5以后的版本开始将InnoDB作为默认的存储引擎,之前的版本都是MyISAM。...如果有大量的插入、修改删除操作,使用InnoDB性能能会更高。 5). 对外键的支持不同 MyISAM不支持外键,而InoDB支持外键。...当然,各种不同MySQL版本对两者的支持都有所改进 2、总结及建议 最后总结一下,MyISAM和InnoDB的主要区别包括 1). 数据的存储结构不同 2). 存储空间的消耗不同 3).

    68120

    MySQL存储引擎MyISAM与InnoDB的区别

    1、MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。...如何修改默认的存储引擎 【1】、修改表引擎方法 alter table table_name engine=引擎名称; 【2】找到mysql安装目录下的my.ini文件: 找到default-storage-engine...,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心; 以下是MySQL 5.7 MyISAM存储引擎的版本特性: InnoDB存储引擎的特点是:行级锁、事务安全(ACID兼容)、支持外键...4、事务支持与否 MyISAM是一种非事务性的引擎,使得MyISAM引擎的MySQL可以提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用; InnoDB是事务安全的; 事务是一种高级的处理方式...6、MyISAM与InnoDB表锁和行锁的解释 MySQL表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。

    73210

    MySQL八股之myisam和innodb

    MySQL系列会通过引擎、索引、事务、锁来说明,这篇文章讲讲基本的概念和引擎的区别。 为啥用MySql? 免费+开源。...undo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子。...2、mysql持久性的保证是利用了redo log。Mysql是先把磁盘上的数据加载到内存中,在内存中对数据进行修改,再刷回磁盘上。如果此时突然宕机,内存中的数据就会丢失。...区别 myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁。...所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。

    39440

    Mysql锁相关锁的分类锁的适用场景MyISAM表锁MyISAM写阻塞读的例子MyISAM读阻塞写例子MyISAM并发插入MyISAM读写并发MyISAM锁调度调节MyISAM锁调度行为解决读写冲突的

    MyISAM锁调度 读锁与写锁互斥; 读操作与写操作串行; 写进程先获得锁,即使读请求先到队列,也会被写请求插队,因为mysql认为写比读要重要(因此MyISAM不适合有大量更新/插入操作)。...解决读写冲突的方法: 系统参数 max_write_lock_count 设置合理值,表的读锁达到设定阈值后,mysql就将写请求优先级降低。...Transaction 事务操作 描述 BEGIN 或者 START TRANSACTION 开始事务 COMMIT 提交事务 ROLLBACK 回滚结束事务,撤销进行中的所有未提交的修改...并发事务问题 描述 解决方案 更新丢失 两个事务对同一行数据修改,先提交的被后提交的覆盖 应用程序对要更新的数据加锁 脏读 A事务改一行数据,B事务读到了A的改动“脏”数据,A回滚则...B的数据有问题 数据库事务隔离,解决读一致性问题:1、读之前加锁,防止其他事务对数据修改;2、不加锁,生成快照,多版本并发控制 不可重复读 一个事务多次读取同一数据发现被改变/删除 同上 幻读

    1.6K50
    领券