我们希望在我们的MariaDB数据库上运行一个优化,同时仍然允许它提供查询。
我发现对于MySQL来说,这是可能的,因为5.7.4 (来自此链接)
对于5.7.4之前的InnoDB表和其他表类型,MySQL在运行优化表期间锁定表。从MySQL 5.7.4开始,对常规的和分区的InnoDB表在线执行优化表。
有没有人知道我们也能为MariaDB做这件事呢?我在MariaDB优化页面没有看到任何提及。
发布于 2016-04-17 13:02:48
您想优化MariaDB表还是要在MariaDB上运行优化表?因为这两件事没有任何关系。
一般来说,优化并不像运行命令那么容易--您需要分析服务器、分析查询、更改架构、检查配置、正确选择、维度和配置硬件和操作系统,并从应用程序中高效地使用它。
优化表是-to总结的命令--对于MyISAM和InnoDB MySQL/MariaDB引擎来说,它破坏了您的表--在大多数情况下对性能没有真正的影响,尽管它可以在某些情况下节省空间。请不要定期执行优化表,在大多数情况下它没有用。,同时为服务器创建大量工作(基本上是重新创建表)。
Online alter只能在MySQL >=5.6+和MariaDB的等效版本上使用。OPTIMIZE TABLE基本上是为InnoDB表运行ALTER TABLE <table> ENGINE=InnoDB,众所周知,它可以是自5.6.17以来在线访问MySQL。对于MariaDB 10+,我不能肯定,因为它将取决于确切的版本,但这就像强制它使用LOCK=NONE参数联机一样容易检查,否则会立即失败。
如果由于任何原因无法在线运行表碎片整理,则始终可以使用pt-联机模式 change并执行null操作,这将在没有(几乎)任何锁定的情况下复制新表。
发布于 2018-01-10 20:49:34
还没有记录,但是
ALTER TABLE t ENGINE=InnoDB, ALGORITHM=INPLACE;确实起作用
(这里还有一个开放的https://jira.mariadb.org/browse/MDEV-10453主题bug )
https://dba.stackexchange.com/questions/135546
复制相似问题