我经常读到有关MySQL数据库的信息,这些数据库在数据库中存在一定数量的表时性能不佳。 我的问题是系统中的所有用户都可以创建一个练习,而每个练习都存储为一个额外的表。从理论上讲,五年后可能会存在超过100,000个甚至2,000,000个表。 这对MySQL系统来说是个问题吗?有什么更好的方法来解决这个问题?
答案 0 :(得分:2)
MySQL本身does not have a built-in limit关于数据库或表的数量。但是,每个数据库将打开一个新目录,每个表可能在该目录中最多包含三个文件。如果您的系统无法有效处理该问题,则一段时间后您可能会遇到问题。
我建议您在由用户创建表时保留带有时间戳的表的记录。然后,可以在它们过时后将其安全放下。
答案 1 :(得分:1)
您可以在每次使用表时使用trigger
。创建一个active_tables
表,并在每次创建新表时都使用日期和时间进行输入。然后为trigger
或select, update, delete OR schema modification
操作创建一个any DML
并在active_table
中更新表修改时间,然后每天运行一次CRON
作业以删除所有过去6个月内未使用过的旧桌子。