MySQL · 引擎特性 · InnoDB Fulltext简介

mysql索引(八)全文索引 Mysql索引大概有五种类型: 普通索引(INDEX):最基本的索引,没有任何限制 唯一索引(UNIQUE):与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。 主键索引(PRIMARY):它 是一种特殊的唯一索引,不允许有空值。 全文索引(FULLTEXT ):可用于 MyISAM 表,mysql5.6之后也可用于innodb表, 用于在一篇文章中,检索文本信息的, 针对较大的数据,生成全文索引很耗时和空间。 联合(组合)索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原 阅读详情

前言

从MySQL5.6版本开始支持InnoDB引擎的全文索引,语法层面上大多数兼容之前MyISAM的全文索引模式。 所谓全文索引,是一种通过建立倒排索引,快速匹配文档的方式。MySQL支持三种模式的全文检索模式:

第一种是自然语言模式(IN NATURAL LANGUAGE MODE),即通过MATCH AGAINST 传递某个特定的字符串来进行检索。

第二种是布尔模式(IN BOOLEAN MODE),可以为检索的字符串增加操作符,例如“+”表示必须包含,“-”表示不包含,“*”表示通配符(这种情况,即使传递的字符串较小或出现在停词中,也不会被过滤掉),其他还有很多特殊的布尔操作符,可以通过如下参数控制:


第三种是查询扩展模式(WITH QUERY EXPANSION), 这种模式是自然语言模式下的一个变种,会执行两次检索,第一次使用给定的短语进行检索,第二次是结合第一次相关性比较高的行进行检索。

目前MySQL支持在CHAR、VARCHAR、TEXT类型的列上定义全文索引。

本文只是简单的分析了全文索引涉及到的代码模块以及5.7的一些新特性,源码部分基于MySQL5.7.8-rc版本。更细节的部分并未深入。

创建全文索引

如下例所示,一个简单的创建带全文索引表的SQL:


磁盘上会产生多个文件:

除了t1.frm和t1.ibd外,共分为以下几类表

a)
FTS_000000000000010b_0000000000000154_INDEX_1~6.ibd这6个文件用于存储倒排索引,存储的是分词和位置以及docment ID,根据分词的第一个字符值进行分区,映射到不同的文件中。

文件的命名规则为FTS_{TABLE_ID}_{INDEX_ID}_INDEX_{N}.ibd

b)
FTS_000000000000010b_DELETED.ibd 包含已经被删除的DOC_ID,但还没从全文索引数据中删掉;
FTS_000000000000010b_DELETED_CACHE.ibd 是前者的内存缓存(但是搜索了下代码,只有当fts_cache_t::deleted_doc_ids被使用时,才会在sync时转储到该表中,但并没有发现任何地方使用这个对象)

c)
FTS_000000000000010b_BEING_DELETED_CACHE.ibd
FTS_000000000000010b_BEING_DELETED.ibd
包含了已经被删除索引记录并且正在从全文索引中移除的DOC ID, 前者是后者的内存版本,这两个表主要用于辅助进行OPTIMIZE TABLE时将DELETED/DELETED_CACHED表中的记录转储到其中。

d)
FTS_000000000000010b_CONFIG.ibd
包含全文索引的内部信息,最重要的存储是FTS_SYNCED_DOC_ID,表示已经解析并刷到磁盘的doc id. 在崩溃恢复时,可以根据这个值判断哪些该重新解析并加入到索引cache中。

建全文索引辅助表函数参考:


当对一个已经存在的表上创建全文索引时,InnoDB采用了fork多个线程进行并发构建全文索引项的方法,并发度由参数innodb_ft_sort_pll_degree 控制。因此在restore一个全文索引表时,我们建议先建表、导入数据,再在表上创建全文索引。

参考函数:row_merge_read_clustered_index --> row_fts_start_psort
线程回调函数为fts_parallel_tokenization。

当表上存在全文索引时,就会隐式的建立一个名为FTS_DOC_ID的列,并在其上创建一个唯一索引,用于标识分词出现的记录行。你也可以显式的创建一个名为FTS_DOC_ID的列,但需要和隐式创建的列类型保持一致。

为了维护表上的全文索引信息,全文索引模块定义了大量的类来进行管理,总的来说,如下图所示:

普通DML及查询操作

插入

我们可以通过INNODB_FT_INDEX_CACHE来检查插入记录的分词:


在插入一条记录时,对应的堆栈如下:

在向原表上插入完成记录后,会去判断表上是否有全文索引(DICT_TF2_FTS),如果有的话,则将插入记录对应的doc id提取出来(fts_get_doc_id_from_row),并缓存到事务对象中。

删除

删除操作不会直接从全文索引里直接删除,因此依然可以从INNODB_FT_INDEX_CACHE中查到分词信息

相关堆栈:


更新

更新非全文索引列,不会修改FTS_DOC_ID列的值。如果更新了全文索引列,在InnoDB的实现是删除老的DOC,并插入新的DOC

堆栈为:


可见所有DML的操作,都走接口函数fts_trx_add_op,划分为两种操作:FTS_INSERT及FTS_DELETE;当前事务涉及的doc id被存储到trx->fts_trx中,在执行SQL的过程中并没有更新全文索引,而是在事务提交时进行的。

在缓存操作时,维护了两个结构,一个是trx->fts_trx->savepoints,维护了事务全局的全文索引操作,另外一个是trx->fts_trx->last_stmt,维护的是当前SQL操作的doc id,前者在事务结束时处理,后者在SQL结束时清空。

查询

对于全文索引的查询,采用新的接口函数,分为两步

第一步,根据检索词搜集符合条件的doc id


在搜集满足查询条件的doc id时,首先读取DELETED表中记录的doc id,这些doc id随后被用做过滤。

第二步,根据搜集到的doc id,找到对应的记录,使用的索引是dict_table_t::fts_doc_id_index,也就是建立在隐藏列FTS_DOC_ID上的唯一索引。


通常查询返回的结果是根据rank排序的,InnoDB的全文检索排序规则和sphinx类似,基于 BM25 和 TF-IDF算法。

rank的计算算法如下:


IDF的计算参阅函数:fts_query_calculate_idf
ranking计算:fts_query_calculate_ranking

如果使用多个单词匹配到,则把各个单词各自的rank累加起来。官方博客有一篇文章专门对此进行了介绍。

事务操作

事务内回滚
正在事务内回滚某个语句,或者回滚到某个savepoint时,需要将对应的操作记录也要删除。维护了trx->fts_trx->last_stmt,在单条SQL结束时释放(trx_mark_sql_stat_end )。如果SQL回滚,就根据last_stmt中维护的doc id从全局savepoints中清理掉本条SQL的doc id。

相关堆栈:


回滚到savepoint

事务提交

相关堆栈:


在调用fts_commit时,会根据不同的操作类型,调用fts_add增加全文索引项,调用fts_delete删除全文索引项。

由于在插入记录时,先分词、分解成多个词插入辅助表中,因此一条insert可能产生多个小的插入。这种写入放大可能是不可承受的。InnoDB采用了一种优化的方案:创建一个内存cache,临时缓存插入操作,当cache满时再批量刷到磁盘,这样做的好处是:

  • 避免重复存储相同的单词

  • cache size 通过参数innodb_ft_cache_size控制

  • 查询会将cache和磁盘数据进行merge

在事务提交时,调用函数fts_add_doc_by_id:

  • 首先根据doc id,使用doc_id所在的索引进行查询,找到刚刚插入的记录项对应的聚集索引记录。

  • 遍历表上全部的聚集索引,根据全文索引对应的fts_get_doc_t(fts_cache_t::get_docs)构建fts_doc_t,对文档根据选择的parser进行分词(fts_tokenize_document函数或者fts_tokenize_document_next),具体的文档存储到fts_doc_t::text中。

  • 将上一步获得的分词加入到cache中(fts_cache_add_doc)

  • 如果当前cache的大小超过配置的innodb_ft_cache_size,或者全局cache的大小超过innodb_ft_total_cache_size(fts_need_sync被设置为true),则进行一次sync,将该表缓存的数据刷到全文索引文件中(fts_sync),并清空cache。

和插入相似,删除操作也可能产生大量小的删除操作, 为了避免这种情况,维持一个表,来记录被删除的doc id, 但记录依然存在于原文件中。删除操作的提交函数为fts_delete,将被删除的记录doc_id插入到DELETED辅助表中。

事务模块涉及的几个关键类包括:

同步缓存

在满足一定条件时,全文索引需要进行一次sync操作,将数据同步到全文索引文件中,大概包含以下集中情况需要sync:

  • cache数据占用的内存超过限制

  • 后台线程fts_optimize_thread在shutdown调用,将所有表进行一次sync。

  • ha_innobase::optimize调用(执行optimize table)

  • row_merge_read_clustered_index:创建一个新的临时表并读入数据后,进行一次sync调用

同步操作的入口函数为fts_sync,大体流程为:

  • 针对每个索引,调用函数fts_sync_index:通过函数fts_select_index计算写入的索引文件,再将分词节点信息写入到文件(函数fts_write_node), 倒排索引的记录内容使用结构体fts_node_t进行描述,存储结构如下图所示:

  • 调用fts_sync_commit提交sync操作:

    • 更新CONFIG表记录的最大SYNC的DOC ID(fts_cmp_set_sync_doc_id);

    • 若fts_cache_t::deleted_doc_ids不为空,将其加入到DELETED_CACHE辅助表中(fts_sync_add_deleted_cache)

    • 清空cache 并重新初始化

Optimize table

当你修改了某些配置(例如最小token size时),或者希望重组全文索引时,可以执行optimize table。由于原始optimize table操作会产生整个表的重建,耗时太久,因此InnoDB引入了一个参数innodb_optimize_fulltext_only来控制该行为。当开启该选项时,如果执行optimize table,就只优化全文索引,而不会去重建表,入口函数为ha_innobase::optimize:


首先调用函数fts_sync_table,将表上在内存中cache的数据刷到全文索引文件中;
然后调用函数fts_optimize_table,我们主要分析集中在第二步。

fts_optimize_table函数流程如下:

  • 如果BEGING_DELETED表中没有数据(例如第一次调用optimized table),则将DELETED表中的数据转储到BEING_DELETED表中,相当于拿到了一个快照,执行的SQL操作为:


参考函数:fts_optimize_create_deleted_doc_id_snapshot

  • 从BEING_DELETED/BEING_DELETED_CACHE表中读取已经被删除的doc id,这些doc id在随后的索引优化中将被忽略掉。
    参考函数:fts_optimize_read_deleted_doc_id_snapshot

  • 调用fts_optimize_indexes 对每个索引进行优化,相关堆栈如下:


  • 当在所有索引上完成optimize后,调用fts_optimize_purge_snapshot,主要操作包括: a)


从DELETE和DELETE_CACHE表中将doc id删除,参考函数fts_optimize_purge_deleted_doc_ids

b)


从BEING_DELETED及BEING_DELETED_CACHE中删除对应的doc id。
参考函数: fts_optimize_purge_deleted_doc_id_snapshot

后台线程

InnoDB启动时,会创建一个后台线程,线程函数为fts_optimize_thread,工作队列为fts_optimize_wq,其主要目的是在满足一定条件时,对表自动进行optimize操作。

在如下两种情况,会向fts_optimize_wq中增加元组:

  • fts_optimize_add_table: 创建或打开一个新的带全文索引的表时,创建一个类型为FTS_MSG_ADD_TABLE并包含表对象指针的MSG,加入到fts_optimize_wq中,这些表禁止被从数据词典中驱逐。

  • fts_optimize_remove_table: 删除表、DDL、释放表对象(dict_mem_table_free)、删除全文索引(fts_drop_index)等操作时,会创建一个类型为FTS_MSG_DEL_TABLE的MEG,加入到fts_optimize_wq队列中。

fts optimize线程对于FTS_MSG_ADD_TABLE类型的会将相应的表加入到调度队列,对于FTS_MSG_DEL_TABLE,则从调度队列中删除。其调度队列的成员类型为fts_slot_t。

当表上删除的数据量超过一千万(FTS_OPTIMIZE_THRESHOLD)行时,就会触发一次自动optimize table,但两次optimize的间隔不应低于300秒(FTS_OPTIMIZE_INTERVAL_IN_SECS)。

监控

我们可以通过几个INFORMATION_SCHEMA下的全文索引表来监控全文索引状态。


想要从information_schema表中查询信息,需要先设置变量innodb_ft_aux_table,值为你要查询表的"dbname/tablename"。

全文索引停词

停词(STOP WORD)用于在分词时忽略那些常见的不重要的单词,InnoDB目前内建的停词可以从information_schema.INNODB_FT_DEFAULT_STOPWORD读取,用户也可以自己定义停词列表,方法很简单:创建一个和nformation_schema.INNODB_FT_DEFAULT_STOPWORD一模一样的表,将你想要的停词加入到其中,然后设置innodb_ft_server_stopword_table值为你创建的表名:"dbname/tabname"。

你也可以使用会话级别的参数innodb_ft_user_stopword_table来指定你想要的停词表。和上述创建规则一致。具体的参阅官方文档

另外配置项innodb_ft_min_token_size及innodb_ft_max_token_size 用于表示一个单词的字符长度范围,在这个范围的连续字符串才会被当作一个单词。 然而如果使用ngram解析器的话,有效单词长度受参数ngram_token_size控制。

可以关闭参数innodb_ft_enable_stopword,这样在分词时也会把预设的停词考虑进去。

InnoDB全文索引插件

从MySQL 5.7.3开始InnoDB支持全文索引插件,用户可以以Plugin的模式来定义自己的分词规则,或是引入社区开发的全文索引解析器,例如某些专业领域的分词,可能具有不同的规则。

全文索引插件有两种角色:第一种是替换内建的parser,读取输入文档,进行解析后,将分词传送给server; 另一种角色是作为内建parser的协作者,可以把输入文档处理过后,再传送给内建parser。

如果你已经有一个基于MYISAM的全文索引插件了,也可以根据这篇官方文档的介绍,将其修改成InnoDB全文索引插件。

InnoDB N-gram parser

从MySQL5.7.6版本开始提供了一种内建的全文索引ngram parser,可以很好的支持CLK字符集(中文,韩文,日文),CLK有个共同点就是单词不像英语习惯那样根据空格进行分解的,因此传统的内建分词方式无法准确的对类似中文进行分词。

ngram parser内建在代码中,该解析器默安装,你可以通过指定索引属性(WITH PARSER ngram)来利用该parser,例如:


N-Gram使用一种特殊的方式来进行分词,举个简单的例子,假设要对单词'abcd'进行分词,那么其分词结果为:

N取决于ngram_token_size`的设置,默认值为2.

对于停词的处理, N-Gram和内建的parser不同,即只要每个token包含了(而不是精确匹配)停词,就不对其进行索引; 另外空格总是作为一个停词,因此在分词取token时,空格会被忽略掉。

在执行查询时,用户传递的搜索词也会基于N-Gram进行分解后进行检索。 具体的例子可以参阅官方博客的描述。

除了N-gram parser外,官方也支持了另外一种名为MeCab Parser的插件,主要用于日语分词,但需要手动安装。


原文:https://yq.aliyun.com/articles/224#

MySQL5.7InnoDB简介 为了获得快速连接性能,请在连接列上定义外键,并在每个表中声明具有相同数据类型的这些列。外键还会将删除和更新传播到所有受影响的表,并且如果父表中不存在相应的 ID,则会阻止在子表中插入数据。由于更改默认存储引擎只会影响新创建的表,因此请运行应用程序安装和设置步骤以确认一切安装正确,然后运用应用程序功能以确保数据加载、编辑和查询功能正常工作。在这种情况下,请将该 子句添加到语句中 以避免错误。将其作为典型数据库应用程序的首选存储引擎,从在本地系统上运行的单用户 wiki 和博客,到突破性能极限的高端应用程序。 阅读详情

相关推荐

mysql数据表引擎InnoDB和MyISAM的特点

1、MyISAM表引擎特点 (1)MyISAM 是MySQL缺省存贮引擎 (2)具有检查和修复表格的大多数工具. (3)表格可以被压缩 (4)支持全文搜索. (5)不是事务安全的.如果事物回滚将造成不完全回滚,不具有原子性。 (6)不支持外键。 (7)如果执行大量的SELECT,MyISAM是更好的选择。 (8)每张MyISAM 表被存放在三个文件 :frm 文件存放表格定义,数据文件是MYD (MYData),索引文件是MYI (MYIndex) 引伸。 (9)表是保存成文件的形式,在跨平台的数据转移

陈嘉怡的专栏 1879

MySQL 之全文索引(fulltext)

本文源自:https://blog.youkuaiyun.com/mrzhouxiaofei/article/details/79940958 最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录。 引入 概念 通过数值比较、范围过滤等就可以完成绝大多数我们需要的查询,但是,如果希望通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值比较。全文索引就是为这种场景设计的。 你可能会说

数据库生态圈(RDB & NoSQL & Bigdata)——专注于关系库应用与研究(Oracle & Mysql & Postgresql & SQL Server ) 1万+

MySQL数据库:FULLTEXT 索引详解与使用指南

MySQL 的 FULLTEXT 索引是一种强大的文本搜索工具,它允许用户对存储在数据库中的文本数据进行全文搜索。通过合理使用 FULLTEXT 索引,可以显著提高文本搜索的查询性能,并为用户提供更好的搜索体验。然而,在使用 FULLTEXT 索引时,也需要注意分词算法、停用词、索引大小和查询性能等因素,以确保其能够按预期工作。新时代农民工(QQ:277718357) 点击关注下方↓微信公众号:程序进阶之路,了解更多技术知识。

sg_knight的专栏 2560

mysql fulltext innodb_InnoDB FULLTEXT

1.概要InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表。比如,为了监视一个FULLTEXT索引中文本处理过程...

weixin_42548782的博客 572

从零开始:手把手教你检查并更新英伟达GPU驱动和CUDA版本(Windows/Linux双平台)

本文详细指导如何在Windows和Linux系统上检查并更新英伟达GPU驱动和CUDA版本,解决版本不匹配导致的常见问题。涵盖驱动更新、CUDA Toolkit安装、版本冲突排解及性能优化技巧,帮助开发者高效管理GPU计算环境。

weixin_29237635的博客 701

Silvaco二极管、三极管、CMOS的制备

Silvaco二极管和三极管的制备

yytu231的博客 5749

MySQL存储引擎MyISAM与InnoDB区别总结整理

1、MySQL默认存储引擎的变迁在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。2、MyISAM与InnoDB存储引擎的主要特点MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;以下是MySQL 5 MySQL存储

徐刘根的博客 2万+

全网最全 | Linux(Ubuntn)系统安装 | 硬盘挂载 | 用户创建 | 生信分析配置

昨天(2024年7月23日)我们分享了学生及科研人员电脑配置推荐 | 笔记本+外置显卡配置,性能足够支持完成你博士论文文本内容,那么今天我们就分享一文解决 | Linux(Ubuntn)系统安装 | 硬盘挂载 | 用户创建 | 生信分析配置的教程,我们使用一文来解决大家在做生信时遇到安装系统、配置环境的问题。在此文中,我们尽快可能给出一套全网最全的教程。目标是解决新手小白同学查资源的困惑和难题。但是,每个童鞋遇到的问题不一样,此教程也不可能把你遇到的每个问题都归纳在其中。我们也希望,

BioinfoDu 2261

InnoDB Fulltext简介

前言 从MySQL5.6版本开始支持InnoDB引擎的全文索引,语法层面上大多数兼容之前MyISAM的全文索引模式。 所谓全文索引,是一种通过建立倒排索引,快速匹配文档的方式。MySQL支持三种模式的全文检索模式: 第一种是自然语言模式(IN NATURAL LANGUAGE MODE),即通过MATCH AGAINST 传递某个特定的字符串来进行检索。 第二种是布尔模式(I

隔壁☞老杨的博客 541

centos7 清理缓存

一、系统环境 系统版本 CentOS Linux release 7.3.1611 (Core) 内核版本 Linux xx-user 3.10.0-514.el7.x86_64 #1 SMP 背景 服务器分配的账号是普通用户,只能执行sudo命令 二、缓存查看及基本概念 查看内存使用情况 [user01@xx-user ~]$ free -h total used free shared buff/cache availabl

sunzq55的博客 4004

2026年中兴微电子数字IC设计笔试题带答案

这篇考试试卷涵盖了数字IC设计的关键知识点,主要包含四个部分:单选题(18分)考查RTL仿真、低功耗设计、跨时钟域处理等基础知识;多选题(15分)涉及低功耗技术、异步FIFO设计和工具链使用;代码设计题(25分)要求实现两级同步器和时钟门控电路;简答题(42分)重点考察异步FIFO原理、ASIC设计流程、FPGA时钟处理和时序违例修复方法。试题注重理论与实践结合,既包含概念性知识也强调实际工程能力,全面检验学生对数字IC前端设计核心技术的掌握程度。

Open 119

MySql中启用InnoDB数据引擎的方法

1、存储引擎是什么?   Mysql中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。MySql默认配置了许多不同的存储引擎,可以预先设置或

Less Is More 5436

基于YOLOv8的野生菌菇检测、识别与分类系统

YOLOv8是YOLO系列模型的最新版本,继承了YOLO系列高效、精确的特点。YOLOv8采用了新的网络架构,并优化了推理速度和检测精度。与传统的目标检测算法(如Faster R-CNN)不同,YOLO模型通过一次前向传播同时完成目标定位与分类,因而具有非常高的计算效率。

YOLO 1284

使用mysql innodb或myisam引擎创建fulltext全文索引

mysql 5.5以后就支持了innodb引擎创建全文索引了。我看网上有写博主说全文索引只有myisam引擎支持,在这里我坚决辟谣 了。接下来看我的一顿操作 以下来自mysql官网的sql #创建表并指定全文索引的列 CREATE TABLE articles ( id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, title VARCHAR(200), body TEXT, ...

王威振的博客 1404

Buck电源设计常见的一些问题(五)MOS管振荡抑制方法(三)

关于开关节点振荡的产生机制和抑制问题,总结了三种抑制方法。第一种方法是利用输入端的高频去耦电容;第二种方法是设计 RC 缓冲电路;第三种方法是优化自举电路的串联电阻。以上三种方法均通过实验加以验证,对开关节点振荡具有很好的抑制作用。应该综合同步 Buck 变换器的各项指标权衡设计。

小幽余生不加糖 1633

基于Slim-Neck架构的YOLOv11轻量化特征融合方案(实现超轻量级与高精度的双重突破)

购买即可解锁800+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,每日更新。

m0_64661770的博客 250

MySQL5.6 InnoDB FULLTEXTIndexes研究测试

1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。 为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表。比如,为了监视一个FULLTEXT索引中文本

刀刀的专栏 11万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Mysql存储引擎InnoDB特性

文章目录MySQL 常用引擎MySQL 可以针对表级别设置数据库引擎吗?怎么设置?常用的存储引擎 InnoDB 和 MyISAM 有什么区别?InnoDB 有哪些特性? MySQL 常用引擎 MySQL 的常用引擎有 InnoDB、MyISAM、Memory 等,从 MySQL 5.5.5 版本开始 InnoDB 就成为了默认的存储引擎。 MySQL 可以针对表级别设置数据库引擎吗?怎么设置? 可...

chapterchou的博客 420

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MySQL全文索引 FULLTEXT索引和like的区别

1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。 为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表。比如,为了监视一个FULLTEXT...

558

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql fulltext like_MySQL全文索引 FULLTEXT索引和like的区别

1.概要InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表。比如,为了监视一个FULLTEXT索引中文本处理过程...

weixin_36079835的博客 898

MySQL存储引擎myISAM与innoDB区别

MyISAM和 InnoDB.是MySQL中最常用的存储引擎。 这两个引擎各有优劣势,我们需要根据业务需求进行选择。 MyISAM 与INNODB的主要差异: 1, MyISAM 不支持事务,而 InnoDB支持 2, MyISAM 无法实现行级别锁,关系完整性,而 InnoDB可以。 MyISAM是表级别锁. 3, InnoDB不支持FULLTEXT索引,而 MyISAM 支持. 4, MyI...

russle的专栏 1054

【Mysql】 InnoDB引擎 - 介绍

【Mysql】 InnoDB引擎 - 介绍

qq_31142237的博客 960

深入解析MySQL存储引擎:从InnoDB到MyISAM的技术全景

MySQL作为最流行的关系型数据库之一,其存储引擎架构设计为不同业务场景提供了灵活的选择。本文将全面剖析MySQL存储引擎的核心机制、实现原理及最佳实践,助您做出精准的技术选型决策。

秃头之旅 1058

MySQL引擎:MyIsam和Innodb的区别

InnoDB: 定义: InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。Innodb引擎提供了对数据库 ACID事务的支持,并且实现了SQL标准的四种隔离级别,该引擎还提供了行级锁和外键约束, 它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统, MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTE...

周洲 (Julie) 1313
上一篇: MySQL · 引擎特性 · InnoDB文件系统管理(二)
下一篇: pycharm快捷键
youbo_sun
博客等级 码龄12年 20粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值