繁体   English   中英

将MyISAM和InnoDB表与Doctrine混合

[英]Mixing MyISAM and InnoDB tables with Doctrine

我目前正在尝试优化我们网站上的搜索功能。 我们使用主义作为ORM,并且所有表当前都是InnoDB。 下面是我们表结构的粗略概述。

Table: Person
Columns:
  personId
  firstName
  middleName
  lastName

Table: Obituary
  obitId
  content  <--- LONG TEXT
  personId

人与Ob告之间存在一对多的关系。

当前用户可以输入一个人的名字,我们的网站将在人表中搜索出现的搜索文本(名字,姓氏,中间名等)以及the告的内容。

现在,此搜索很慢,因为itu告表的内容列是长文本。 从InnoDB切换到MyISAM可以大大提高性能。 目前,“人”的任何更改也将级联为“ itu告”。 现在,任何更新都是按小时进行的,因此写作并不像搜索那样普遍。

我的问题是,如果我将Obitary表切换到MyISAM,那么在保存和更新Person记录时,这对教义会有负面影响吗?

主义会注意吗? 可能不是。

会引起问题吗? 只有当事情出错时。 MyISAM不是事务存储引擎。 如果在事务内部更改MyISAM表,则必须回滚更改,这些更改将不会在该表中回滚。 自从我试图可怕地破解它已经有一段时间了,但是我敢打赌MySQL在这种情况发生时甚至不会发出警告。 这将导致数据一致性问题。

如果控制服务器,则应认真考虑使用外部搜索软件来减轻数据库负担,例如ElasticSearch (在应用程序级别集成)或Sphinx (在MySQL级别集成)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM