mysql dba系统学习(20)mysql存储引擎MyISAM

mysql存储引擎MyISAM1,创建myisam表mysqlcreatetablet(idint,namevarchar(30),msgvarchar(100))engine=MyISAM;mysqlshowtablestatusliketG;*****************

mysql存储引擎MyISAM

1,创建myisam表

mysql> create table t (id int , name varchar(30) , msg varchar(100)) engine = MyISAM;mysql> show table status like “t” G ;*************************** 1. row ***************************Name: tEngine: MyISAMVersion: 10Row_format: DynamicRows: 0Avg_row_length: 0Data_length: 0Max_data_length: 281474976710655Index_length: 1024Data_free: 0Auto_increment: NULLCreate_time: 2013-09-12 00:39:29Update_time: 2013-09-12 00:39:29Check_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options:Comment:1 row in set (0.00 sec)

2,auto_increment

当使用这个参数的时候,这个列一定要是主键

mysql> create table tt (id int auto_increment primary key , name varchar(30) , msg varchar(100)) engine = MyISAM;Query OK, 0 rows affected (0.01 sec)mysql> insert into tt(name,msg) values(‘chenzhongyang’,’good’);Query OK, 1 row affected (0.00 sec)虽然我们没有指定名字是chenzhongyang的id是1,但是有了auto_increment这个参数,系统会自动给他加上1mysql> select * from tt;+—-+—————+——+| id | name| msg |+—-+—————+——+| 1 | chenzhongyang | good |+—-+—————+——+1 row in set (0.01 sec)

我们还可以设置auto_increment的值,但是这个值设置了的话,就会从这个值开始累积

mysql> alter table tt auto_increment=2000;Query OK, 1 row affected (0.02 sec)Records: 1 Duplicates: 0 Warnings: 0mysql> insert into tt(name,msg) values(‘tianhongyan’,’baby’);Query OK, 1 row affected (0.00 sec)mysql> select * from tt;+——+—————+——+| id | name| msg |+——+—————+——+| 1 | chenzhongyang | good || 2000 | tianhongyan | baby |+——+—————+——+2 rows in set (0.00 sec)mysql> insert into tt(name,msg) values(‘zhongguo’,’XXXXXXX-YYYYYYYYY-+VVVV’);Query OK, 1 row affected (0.00 sec)mysql> select * FROM tt;+——+—————+————————-+| id | name| msg|+——+—————+————————-+| 1 | chenzhongyang | good|| 2000 | tianhongyan | baby|| 2001 | zhongguo| XXXXXXX-YYYYYYYYY-+VVVV |+——+—————+————————-+3 rows in set (0.00 sec)

还有一个函数比较有用last_insert_id()。这个函数可以查出最后一次insert的id

mysql> select last_insert_id();+——————+| last_insert_id() |+——————+|2001 |+——————+1 row in set (0.00 sec)

3,存储结构

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

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

如果我们把索引文件和数据文件放到不同的机器上,那么可以提高系统i/o

4,不支持事务

即使我们关闭autocommit,myisam引擎还是会立即执行我们的命令,这个时候rollback已经没有用了

mysql> show variables like “%autocommit%”;+—————+——-+| Variable_name | Value |+—————+——-+| autocommit | ON |+—————+——-+1 row in set (0.00 sec)mysql> set autocommit=OFF ;Query OK, 0 rows affected (0.00 sec)mysql> show variables like “%autocommit%”;+—————+——-+| Variable_name | Value |+—————+——-+| autocommit | OFF |+—————+——-+1 row in set (0.00 sec)mysql> delete from tt where id=1;Query OK, 1 row affected (0.00 sec)mysql> rollback;Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> select * from tt;+——+————-+————————-+| id | name| msg|+——+————-+————————-+| 2000 | tianhongyan | baby|| 2001 | zhongguo | XXXXXXX-YYYYYYYYY-+VVVV |+——+————-+————————-+2 rows in set (0.00 sec)

5,myisam_data_pointer_size

默认的指针大小是6byte,一个字节是8bit那么数据文件的大小就是2的6*8次方byte

也就是1024*1024*1024*1024*256/1024/1024/1024/1024=256TB

mysql> show variables like “%pointer%”;+————————–+——-+| Variable_name| Value |+————————–+——-+| myisam_data_pointer_size | 6|+————————–+——-+1 row in set (0.00 sec)

我们来做个实验试试

卡奥斯智能交互引擎 卡奥斯智能交互引擎

聚焦工业领域的AI搜索引擎工具

卡奥斯智能交互引擎 36 查看详情 卡奥斯智能交互引擎 如果myisam_data_pointer_size=2,那么就意味着一个表的最大数据文件是65535/1024=64Kmysql> set global myisam_data_pointer_size=2;Query OK, 0 rows affected (0.00 sec)mysql> show variables like “%pointer%”;+————————–+——-+| Variable_name| Value |+————————–+——-+| myisam_data_pointer_size | 2|+————————–+——-+1 row in set (0.00 sec)我们来创建一个 大表ssmysql> create table ss select * from information_schema.tables ;Query OK, 54 rows affected (0.09 sec)Records: 54 Duplicates: 0 Warnings: 0mysql> insert into ss select * from ss;Query OK, 108 rows affected (0.01 sec)Records: 108 Duplicates: 0 Warnings: 0mysql> insert into ss select * from ss;Query OK, 216 rows affected (0.01 sec)Records: 216 Duplicates: 0 Warnings: 0这个时候出现了表ss满了的错误,我们看看数据文件 是64K,要想继续可以插入数据,那么就要把这个参数调大mysql> insert into ss select * from ss;ERROR 1114 (HY000): The table ‘ss’ is fullmysql> insert into ss select * from ss;ERROR 1114 (HY000): The table ‘ss’ is fullmysql> insert into ss select * from ss;ERROR 1114 (HY000): The table ‘ss’ is full[root@test3 test]# ls -lhtotal 116K-rw-rw—-. 1 mysql mysql 9.3K Sep 12 06:44 ss.frm-rw-rw—-. 1 mysql mysql 64K Sep 12 06:44 ss.MYD-rw-rw—-. 1 mysql mysql 1.0K Sep 12 06:44 ss.MYImysql> insert into ss select * from ss;ERROR 1114 (HY000): The table ‘ss’ is fullmysql> alter table ss max_ROWS=10000000000 ;Query OK, 496 rows affected (0.11 sec)Records: 496 Duplicates: 0 Warnings: 0mysql> insert into ss select * from ss;Query OK, 496 rows affected (0.02 sec)Records: 496 Duplicates: 0 Warnings: 0

·可以处理固定长度或动态长度记录。

7,加锁和并发

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/530716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
橘子漫画网页版防走失最新链接 Oranz官网入口(2025可用)
上一篇 2025年11月9日 10:25:10
Linux Postman如何导入数据
下一篇 2025年11月9日 10:25:20

相关推荐

  • MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板

    MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板MySQL字段映射表自动生成方案_Sublime一键导出JSON与结构化模板

    如何利用sublime text插件提升mysql字段映射表生成效率?1. 插件通过自动化提取sql语句中的表结构信息,减少手动操作;2. 支持一键导出为json或结构化模板(如markdown、html表格),提升开发效率;3. 利用sublime text的python插件机制,实现快速集成与执…

    2026年9月22日 用户投稿
    000
  • 玩转 Spring Boot 集成篇(定时任务框架Quartz)

    玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)玩转 Spring Boot 集成篇(定时任务框架Quartz)

    在日常项目研发中,定时任务可谓是必不可少的一环,关于 spring boot 如何实现静态定时任务、动态定时任务以及如何开启多线程跑任务,均已在上篇分享过,不再赘述。 虽然 Spring Boot 内置注解方式实现的定时任务,在一定程度上也能解决一定的业务场景问题,但是若做更复杂的动作,例如启停任务…

    2026年9月22日 用户投稿
    100
  • 如何用Sublime导出MySQL数据表结构_生成Markdown或HTML格式文档

    要使用 sublime text 导出 mysql 数据表结构并生成 markdown 或 html 文档,需通过以下步骤操作:1. 使用 show create table 命令或 mysqldump 工具获取建表语句;2. 在 sublime 中整理字段信息,按字段名、类型、是否为空、键、默认值…

    2026年9月22日
    000
  • MySQL备份数据恢复演练_MySQL数据恢复流程与实战

    MySQL备份数据恢复演练_MySQL数据恢复流程与实战MySQL备份数据恢复演练_MySQL数据恢复流程与实战MySQL备份数据恢复演练_MySQL数据恢复流程与实战MySQL备份数据恢复演练_MySQL数据恢复流程与实战

    mysql备份数据恢复演练是为了验证备份有效性并提升dba恢复能力的必要措施。其核心流程包括:1.准备与生产环境相似的演练环境并明确恢复目标;2.检查备份策略并准备所需全量与增量备份文件;3.模拟数据丢失场景并记录故障时间;4.停止mysql服务、清理数据目录后从全量备份恢复;5.依次应用增量备份并…

    2026年9月22日 用户投稿
    100
  • MySQL自动化备份如何实现_适合企业级部署吗?

    MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?MySQL自动化备份如何实现_适合企业级部署吗?

    mysql的自动化备份对企业级部署是必要的,且可通过多种方式实现。1. 使用mysqldump+定时任务(crontab)是最基础的方式,操作简单适合中小规模数据库,但备份时可能锁表影响业务;2. 增量备份结合二进制日志(binary log)更高效,适用于频繁变更的数据,支持精确恢复到某时间点;3…

    2026年9月21日 用户投稿
    100
  • Online Config VS Code

    Online Config VS CodeOnline Config VS CodeOnline Config VS CodeOnline Config VS Code

    run vs view Install Code Server Update Code Server Database:It is recommended to create a Docker container for the database. Code Language: JavaScript…

    2026年9月21日 用户投稿
    100
  • Bun 1.3 正式发布

    2025年10月10日,高性能 javascript 运行时 bun 发布了 1.3 版本。这是 bun 项目迄今为止最重大的版本更新,标志着 bun 从单纯的运行时工具演变为一个功能完备的全栈 javascript 开发平台。 从运行时到全栈平台的跨越 Bun 1.3 的核心突破在于将前端开发能力…

    2026年9月21日
    100
  • MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    要快速补全mysql字段注释,可通过sublime text编写python脚本实现自动化;1. 脚本获取表名,可手动输入或从当前sql文件解析;2. 通过subprocess调用mysql命令行获取show full columns信息;3. 解析输出内容,提取字段名和现有注释;4. 生成alte…

    2026年9月21日 用户投稿
    200
  • 在Java中如何实现对象的唯一标识

    答案:Java中实现对象唯一标识主要有四种方式:1. 使用UUID生成全局唯一ID,适用于无数据库或分布式场景;2. 利用数据库自增主键,通过JPA的@Id和@GeneratedValue实现持久化唯一性;3. 重写equals与hashCode方法,基于不可变业务字段保证逻辑唯一;4. 采用Sno…

    2026年9月21日
    100
  • MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理MySQL数据备份自动化实施_MySQL定时任务与脚本管理

    mysql数据备份的自动化实施核心在于结合mysqldump等工具与操作系统的定时任务(如linux的cron或windows的task scheduler),通过编写和管理脚本实现定期执行备份。1. 使用mysqldump作为基础工具,编写包含数据库连接信息、时间戳文件名、日志记录、压缩清理等功能…

    2026年9月21日 用户投稿
    200
  • MySQL热点数据缓存策略_MySQL减少磁盘访问提升性能

    MySQL热点数据缓存策略_MySQL减少磁盘访问提升性能MySQL热点数据缓存策略_MySQL减少磁盘访问提升性能MySQL热点数据缓存策略_MySQL减少磁盘访问提升性能MySQL热点数据缓存策略_MySQL减少磁盘访问提升性能

    mysql热点数据缓存的核心在于将频繁访问的数据保留在内存中以减少磁盘i/o,提升查询速度并缓解数据库压力。1. innodb缓冲池是关键机制,需合理配置其大小(通常为服务器内存的70-80%)及实例数以优化性能;2. 应用层缓存如redis/memcached通过前置缓存逻辑减少对mysql的直接…

    2026年9月21日 用户投稿
    200
  • MySQL常见错误码代表什么_如何快速定位问题?

    MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?MySQL常见错误码代表什么_如何快速定位问题?

    遇到mysql错误码应先明确错误类型再逐步排查。error 1045表示用户名、密码或访问权限问题,需检查拼写、ip限制和远程访问权限;error 2003表示连接失败,需依次检查服务器状态、mysql服务运行情况、防火墙设置及bind-address配置;error 1054表示sql语句中引用了…

    2026年9月21日 用户投稿
    100
  • MySQL如何实现数据的实时备份_有哪些高效工具和方法?

    mysql 实时备份主要依赖主从复制、二进制日志(binlog)配合增量备份,以及借助专业工具实现自动化监控与恢复。一、主从复制通过将主库数据变更同步到从库实现“准实时”备份,但存在延迟风险,建议开启 gtid 模式提升一致性;二、结合 binlog 与定时归档实现可回溯的增量备份,配合全量备份可恢…

    2026年9月21日
    100
  • SpringBoot的定时任务

    SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务SpringBoot的定时任务

    大家好,我是你们的老朋友全栈君。我们又见面了。 一、基于注解(@Scheduled)的定时任务 使用SpringBoot的@Scheduled注解来创建定时任务非常简单,只需几行代码就能实现。然而,@Scheduled默认是单线程运行,这意味着当启动多个任务时,一个任务的执行时间可能会影响到下一个任…

    2026年9月21日 用户投稿
    500
  • MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南MySQL全文搜索引擎集成方案_提升文本数据搜索能力的实用指南

    mysql原生全文搜索功能存在明显局限,需结合外部搜索引擎才能满足复杂需求。1. mysql全文搜索适用于小数据量、简单查询场景,但分词能力弱,尤其对中文支持差,查询功能有限,无法实现模糊查询、纠错等高级功能,且性能随数据量增长显著下降。2. 外部搜索引擎如elasticsearch(es)和sph…

    2026年9月21日 用户投稿
    100
  • MySQL慢查询到底是什么_怎样快速定位并修复它?

    MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?MySQL慢查询到底是什么_怎样快速定位并修复它?

    mysql慢查询可通过开启日志、分析日志和针对性优化快速定位修复。具体步骤:1. 修改配置文件或使用命令开启慢查询日志并设置阈值;2. 利用mysqldumpslow或pt-query-digest工具分析日志内容,找出耗时sql;3. 针对常见原因如缺少索引、sql写法不合理、数据量过大、锁竞争及…

    2026年9月21日 用户投稿
    100
  • MySQL如何处理长时间运行的查询_避免数据库阻塞?

    MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?MySQL如何处理长时间运行的查询_避免数据库阻塞?

    诊断mysql慢查询需1.开启慢查询日志并设置long_query_time;2.使用explain分析sql执行情况;3.借助工具如pt-query-digest分析日志。优化涉及1.确保join字段有索引;2.优化join顺序及减少join表数;3.使用临时表、批量处理和数据分区。防止阻塞应1.…

    2026年9月21日 用户投稿
    100
  • PHP/MySQL:高效合并订单商品并按日期分组显示

    本教程将指导如何在PHP/MySQL应用中,将同一日期的订单商品合并显示在同一行,以提高数据展示的清晰度。核心解决方案是利用MySQL的GROUP_CONCAT函数在数据库层面进行高效聚合,避免复杂的PHP逻辑处理,从而简化代码并优化性能。 订单数据展示的常见挑战 在开发在线购物平台时,通常需要向用…

    2026年9月21日
    200
  • MySQL数据库如何支持多租户业务_设计策略与实现?

    MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?MySQL数据库如何支持多租户业务_设计策略与实现?

    mysql 支持多租户架构的关键在于选择合适的数据隔离策略,并兼顾性能与运维管理。1. 常见方式包括共享数据库共享表(资源利用率高但隔离性差)、共享数据库独立表(平衡隔离性与维护成本)和独立数据库(隔离性强但管理复杂)。2. 租户识别需在请求前确定租户id,并自动附加到sql查询中,可通过视图或中间…

    2026年9月21日 用户投稿
    100
  • MySQL 大型历史数据表结构设计与优化指南

    本文旨在为处理大量客户历史交易数据的MySQL数据库设计提供专业指导。我们将探讨如何构建高效、可扩展的表结构,重点关注主键设计、数据分区、实时数据摄入以及性能优化策略,以确保系统能够稳定支持百万级乃至亿级数据量的查询需求。 MySQL大型历史数据表结构设计与优化 在处理大量历史数据,特别是涉及到多用…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信