【发布时间】:2015-03-14 09:37:23
【问题描述】:
我正在尝试找出最适合我们每个表和要求的 MySQL 表引擎。
具有多次读取(SELECT 查询)的表是 MyISAM。 具有许多写入(插入/更新查询)的表是 InnoDB。这是我们唯一使用的两种类型,但现在我们有不同的场景,我们不知道哪种数据库引擎最好。
1)我们有一个表users,我们经常更新/选择,比如每秒 1 行用于 SELECT,每 1 秒 1 行用于 UPDATE,但插入很少见,比如每 300 秒 1 行。为此,我们选择了 MyISAM。
2) 我们有一个表users_data,我们在表users 中插入数据的频率与我们在表users 中的插入频率一样,例如每300 秒一次,但我们不会太频繁地更新此表,但我们每隔一段时间就会读取一次1秒。为此,我们选择了 MyISAM
3)我们有一个表transactions,我们经常在其中插入数据,例如每 4-5 秒插入 1 行,并且我们每 20-30 秒从中选择大包(我们经常根据此表生成许多 SUM在用户 ID 上)。为此,我们选择了 MyISAM。
4)我们有一个表transactions_logs,我们在其中存储 id(与transactions 表相同)、商家名称、电子邮件,我们经常插入数据,比如每 4-5 秒插入 1 行,但我们很少读这个。为此,我们选择了 InnoDB。
我们很少加入表transactions 和transactions_logs 进行统计。
5)我们有一个表pages,我们只经常选择数据,比如每秒 1 行。为此,我们选择了 MyISAM 并开启了 MySQL 缓存。
问题:
a)我们有另一个表,每 100000 秒有 1 个 INSERT,但每秒有很多 SELECT/UPDATE 查询?这应该是什么类型的?对于这种类型,我们现在使用 MyISAM。 我们从中读取数据,修改它,然后更新它,我们每 1-2 秒执行一次。 MyISAM 是最好的选择吗?
b) 你认为我们应该对所有表都使用 InnoDB 吗?我读到自 MySQL 5.6 以来,InnoDB 是默认的表类型,并且可能进行了很多优化。
【问题讨论】:
标签: mysql