我想在我的应用程序中使用两个 MySQL 数据库功能。第一个是全文搜索和交易。
现在,这里的困境是我无法在一个存储引擎中获得此功能。我要么使用 MyIsam(具有全文搜索功能),要么使用 InnoDB(支持 TRANSACTION 功能)。我不能两者兼得。
我的问题是,在我被迫在两个存储引擎之间做出选择之前,我是否可以在我的应用程序中同时拥有这两种功能。
可能的解决方法:
使用 Sphinx 或 Solr 或其他一些外部文本搜索引擎进行文本搜索并使用 InnoDB 引擎。
编写您自己的搜索代码 - 并使用 InnoDB。这并不是一个真正的选择,除非您的搜索需求有限或您的预算巨大。
使用 MyISAM 和 InnoDB 这两个引擎。将要进行全文搜索的列保留在 MyISAM 中,其余列保留在 InnoDB 中。这将是有风险的,因为 MyISAM 中的数据不会是事务安全的。
使用 MyISAM 和 InnoDB 这两个引擎。将所有数据保留在 InnoDB 中,并将要进行全文搜索的列复制到 MyISAM 中。这将需要一些机制(触发器)来进行数据复制。
等待 InnoDB 或其他事务引擎支持全文搜索的 MySQL 版本。
(选项 4)但使用具有“崩溃安全”(但仍然不是事务安全)全文索引的 MariaDB(MySQL 分支):事务性全文索引何时准备就绪? http://kb.askmonty.org/en/when-will-transactional-fulltext-indexes-be-ready
使用事务引擎中具有全文支持的其他 RDBMS,例如 PostgreSQL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)