我有一个包含 15 个表的 MySQL 数据库。其中三个用于网站身份验证,另外三个是经常读取和写入的表。然后其他表格一成不变,除非我对 Web 应用程序进行一些重大更改,否则我永远不需要更改它们。
鉴于我不需要在运行时写入这些表,我能做些什么来提高我的数据库效率和性能?
通过谷歌搜索,我能够看到 MyISAM 的一些设置,但更愿意坚持使用 InnoDB。除了某些人将整个数据库设为只读之外,找不到任何其他信息。但是,我有一些我需要读/写的表。
编辑:
四张表为 4MB 及以下,一张为 7.55MB。我是否也不需要调整我的所有程序来检查内存中的表是否存在?导致实例重新启动时它可能会消失。
简短的回答:您正在为自己做不必要的工作。一切都使用 InnoDB。忘记“只读”。
长答案:
底线...
key_buffer_size
为 20M 只是因为某些系统表使用该引擎。innodb_buffer_pool_size
为 RAM 的 70%(如果您的 RAM 少于 4GB,则设置为较小的百分比)。在 MySQL 中,您可以撤销和授予特定权限。
因此,我们将
REVOKE ALL
根据需要对特定数据库的表授予特权,之后我们将只SELECT
授予它特权,然后它将成为只读表: