- 增加指数在迅速变化列如"lastUpdatedOn"值得吗?
- 如何计算的折衷?
- 可以有人点我要正式文件何时和如何 不MySQL reindexes在行插入和更新索引列。
0
是否有指数,包括"迅速变化的柱" 是 一个折衷。
一个 UPDATE
需要删除一个条目中的一个索引,并添加一个新条目,在其他地方的索引。
另一方面,该指数 可能 大大加速了由于该指数。
请提供一个具体的例子,所以我们可以讨论的优点和缺点进一步。
常规的非UNIQUE
指数(相对于 FULLTEXT
和 SPATIAL
)是保持这样的:
有一个"改变缓冲区"(qv)在buffer_pool,维护指数更新的,尚未写入磁盘。
当一个 DELETE
发生,添加一个条目改变缓冲器的来说,索引条目需要被删除。
对于 UPDATE
两个条目 可能 需要投入的CB。
当一个 SELECT
使用这一索引,检查这两个CB和真正的、磁盘、b树的索引。 那b树是缓存的(方框框)在buffer_pool. (A块是16kb和可持百(s)条。)
CB是刷盘"在后台"或"需要"。 这涉及到获取索引块(除非已经缓存),更新一些条(删除,并且/或者添加),写信回磁盘。 两者的读写的高速缓存在buffer_pool,所以或不可以被一个物理I/O.
MySQL不"重建"的一个常规的索引("重新编制索引")除了通过定 ALTERs
或 OPTIMIZE
. 也就是说,所有的变化是由于飞行。 作CB是对用户透明的。