我正在设计一个只对某些数据库表进行读取查询的应用程序(这是一种搜索应用程序);查询的数据在夜间由系统更新(因此速度不太重要,但在这里也非常重要),而应用程序用户仅在存储的数据中进行全文搜索。
检索性能是应用程序的关键点。
您能否建议我可以阅读的链接、Google 术语或参数以及其他材料,以正确设计将涉及用户搜索的数据库部分?
我已经了解索引的基础知识,并使用 EXPLAIN 检查查询,我正在阅读有关表分区的内容,看看是否有什么可以帮助我的。
该应用程序将在 MySQL 5.6 上运行
到目前为止,它的内置 FULLTEXT 搜索足以满足我们的要求,我正在寻找更多关于如何正确构建数据库的提示,这样我就不会增加不必要的减速(通过利用没有用户查询将更新数据)。
我应该寻找哪些其他数据库技术?
全文搜索是一种补充传统 SQL 数据库的专门技术。MySQL 中内置了一个简单的全文索引功能,但您可能会发现其他功能更强大、性能更高的替代方案。
我在这里做了一个比较它们的演示:Full Text Search Throwdown。
简短的回答:Sphinx 搜索。
回复您的评论:
看来您的问题与特定解决方案无关,而只是询问性能优化类别。
最后,我经常给出的关于优化的建议是,上面列出的每种方法都以牺牲其他查询为代价来优化一个查询。例如,如果您读取和写入单个行,则分片非常好,但如果您查询跨越多个分片的行范围,则分片会使事情变得更糟。