千家信息网

MySQL中存储引擎InnoDB配置与使用的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关MySQL中存储引擎InnoDB配置与使用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。innodb 通过多版本并发控制(MV
千家信息网最后更新 2026年11月02日MySQL中存储引擎InnoDB配置与使用的示例分析

这篇文章将为大家详细讲解有关MySQL中存储引擎InnoDB配置与使用的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

innodb 通过多版本并发控制(MVCC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。同时,使用一种被称为next-key locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB存储引擎还提供了插入缓冲(insert buffer)、二次读写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

如何设置InnoDB为默认引擎:

  • 1. 查看mysql存储引擎情况: mysql>show engines。 InnoDB | YES,说明此mysql数据库服务器支持InnoDB引擎。

  • 2. 设置InnoDB为默认引擎:在配置文件my.ini中的 [mysqld] 下面加入default-storage-engine=INNODB

  • 3. 重启mysql服务器

  • 4. 登录mysql数据库,mysql>show engines。如果出现 InnoDB |DEFAULT,则表示设置InnoDB为默认引擎成功。

InnoDB常用配置参数:

#InnoDB存储数据字典、内部数据结构的缓冲池,16MB 已经足够大了。innodb_additional_mem_pool_size = 16M#InnoDB用于缓存数据、索引、锁、插入缓冲、数据字典等#如果是专用的DB服务器,且以InnoDB引擎为主的场景,通常可设置物理内存的50%#如果是非专用DB服务器,可以先尝试设置成内存的1/4,如果有问题再调整#默认值是8M,非常坑X,这也是导致很多人觉得InnoDB不如MyISAM好用的缘故innodb_buffer_pool_size = 4G#InnoDB共享表空间初始化大小,默认是 10MB,也非常坑X,改成 1GB,并且自动扩展innodb_data_file_path = ibdata1:1G:autoextend#如果不了解本选项,建议设置为1,能较好保护数据可靠性,对性能有一定影响,但可控innodb_flush_log_at_trx_commit = 1#InnoDB的log buffer,通常设置为 64MB 就足够了innodb_log_buffer_size = 64M#InnoDB redo log大小,通常设置256MB 就足够了innodb_log_file_size = 256M#InnoDB redo log文件组,通常设置为 2 就足够了innodb_log_files_in_group = 2#启用InnoDB的独立表空间模式,便于管理innodb_file_per_table = 1#启用InnoDB的status file,便于管理员查看以及监控等innodb_status_file = 1#设置事务隔离级别为 READ-COMMITED,提高事务效率,通常都满足事务一致性要求transaction_isolation = READ-COMMITTED 其他配置选项也需要注意:#设置最大并发连接数,如果前端程序是PHP,可适当加大,但不可过大#如果前端程序采用连接池,可适当调小,避免连接数过大max_connections = 60#最大连接错误次数,可适当加大,防止频繁连接错误后,前端host被mysql拒绝掉max_connect_errors = 100000#设置慢查询阀值,建议设置最小的 1 秒long_query_time = 1#设置临时表最大值,这是每次连接都会分配,不宜设置过大 max_heap_table_size 和 tmp_table_size 要设置一样大max_heap_table_size = 96Mtmp_table_size = 96M#每个连接都会分配的一些排序、连接等缓冲,一般设置为 2MB 就足够了sort_buffer_size = 2Mjoin_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 2M#建议关闭query cache,有些时候对性能反而是一种损害query_cache_size = 0#如果是以InnoDB引擎为主的DB,专用于MyISAM引擎的 key_buffer_size 可以设置较小,8MB 已足够#如果是以MyISAM引擎为主,可设置较大,但不能超过4G#在这里,强烈建议不使用MyISAM引擎,默认都是用InnoDB引擎key_buffer_size = 8M#设置连接超时阀值,如果前端程序采用短连接,建议缩短这2个值#如果前端程序采用长连接,可直接注释掉这两个选项,是用默认配置(8小时)interactive_timeout = 120wait_timeout = 120

几个关于InnoDB引擎数据表设计相关的建议:

  • 1. 所有InnoDB数据表都创建一个和业务无关的自增数字型作为主键,对保证性能很有帮助;

  • 2. 杜绝使用text/blob,确实需要使用的,尽可能拆分出去成一个独立的表;

  • 3. 时间戳建议使用 TIMESTAMP 类型存储;

  • 4. IPV4 地址建议用 INT UNSIGNED 类型存储;

  • 5. 性别等非是即非的逻辑,建议采用 TINYINT 存储,而不是 CHAR(1);

  • 6. 存储较长文本内容时,建议采用JSON/BSON格式存储;

InnoDB锁类型

InnoDB存储引擎实现如下两种标准的行级锁

  • 共享锁(S Lock), 允许事务读一行数据

  • 排他锁(X Lock),允许事务删除或更新一行数据

共享锁和排他锁的兼容

注意:

(1)S锁和X锁都是行锁,兼容是指对同一记录(row)锁的兼容性.

(2)事务T1已经获得行R的共享锁,另一个事务T2可以立即获得行R的共享锁,这种情况称为锁兼容。事务T3想获得行R的排他锁,则必须等待事务T1、T2释放行R上的共享锁,这种情况成为锁的不兼容.

关于"MySQL中存储引擎InnoDB配置与使用的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

引擎 存储 数据 建议 事务 配置 前端 性能 服务器 程序 服务 缓冲 最大 适当 情况 篇文章 类型 级别 示例 分析 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 工业互联网科技新基建 互联网公司 科技公司 互联网科技公司发展 合肥互联网科技公司 宜安科技 互联网金融 互联网科技上市公司 火传媒上海互联网科技 互联网科技类展会 哈尔滨秒房互联网科技有限公司 安控科技rtu产品工业互联网 中国科技互联网公司收入 承德科技产业互联网发展 宝灵互联网科技有限公司 电子科技大学互联网创业大赛 中和天地互联网科技有限公司 从那以后互联网科技有限公司 科技和互联网行业的特点 互联网科技创业计划的风险分析 如何强化互联网金融科技 重生之互联网科技帝国 互联网科技论文 广州互联网络科技有限公司 猫创互联网科技 深圳期待互联网科技 上海卓越科技 互联网 中盈科技互联网信息有限公司 阿里巴巴算科技企业还是互联网 欧洲十大科技互联网公司 上海旺乐尼互联网科技有限公司
0