mysql - 如何优化 MySQL 以处理小型数据库,即 < 100mb?

标签 mysql database relational-database

我正在设计一个可能小于 100 MB、有自己的服务器并且将通过内联网 Java EE Web 应用程序读取和修改的基础。我找到了很多关于优化大型基地的引用资料,我知道这是一个更关键的问题,但我有很多时间,读取/插入速度是项目的优先事项,我很确定我可以以某种方式利用如此小的总数据库大小。当然,除非 MySQL 已经自然地针对那种小型基准进行了优化。

当然,它确实适合内存,但我需要它的数据真正持久保存在磁盘上,或者至少在不久之后保存到磁盘;我想到了一些听起来很疯狂的替代方案,比如在第一次需要时(可能是在用户连接时?)按顺序将整个基加载到内存中,以某种方式,然后将其提交到磁盘。

但我认为最好在这里问一下,看看是否有人以前遇到过这种情况,并且有一个从小基数中获利的好主意

我更多地考虑在数据库访问方面而不是结构方面,尽管如果有人有针对小型数据库的结构设计技巧并且认为它们使访问优化问题完全无关紧要,那么说明这可能是也是一个适当的回应。

提前致谢。

编辑:该应用程序有点关键,在我完成后它将由主要使用 MySQL 的人开发,因此不同的 DBMS 不是一个很好的选择,除非它们与 MySQL 非常相似.

最佳答案

数据库就是为处理这类事情而设计的,因此大部分基础设施都为您准备就绪。

您有责任:

  • 根据数据、卷和 dbms 创建适当的索引。

  • 规范化数据。

  • 应用良好的验证 - 而不是空值、唯一性等。

  • 使用解释计划了解如何加快查询速度 - 每种情况都不同。

  • 使用缓存提高性能。

  • 确保所有表都定义了唯一的主键(可能很明显,但仍然是必需的)。

关于mysql - 如何优化 MySQL 以处理小型数据库,即 < 100mb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825825/

相关文章:

mysql - Tomcat7 显示部署我的应用程序时出错,提示 'MISSING TABLE:XXX'

MySQL(涉及数组)需要表建议

Android - 在 AsyncTask 中执行后

c# - 将历史数据保存在数据库中

SQL 条件关系

mysql - 如何将一张表与两张表关联起来

mysql - MySQL 多变量依赖表的命名约定

java - 数据库 session 上下文中的更改随着池连接的重用而持续存在

PHP如果一个变量有重复只显示第一个实例?

PHP & MySQL : Creating your own Prepared statement without using MySQLi and/or PDO