在日常和客户沟通的过程中发现,他们在做mysql ddl变更的时候由于MySql本身的缺陷不支持online ddl,导致他们的业务不得不hang住一会儿,表越大,时间影响越长,所以期待有更好的解决方法;有些用户也想了一些方法,比如通过主备切换的方法,先在备库进行ddl,然后在通过主备切换到原主库进行ddl,但由于RDS对外提供给用户的是一个dns加port,所以后端的主备对用户是透明的,此方法行不通。其实在开源社区中已经有比较成熟的方法,那就是percona的pt-online-schema-change工具是其中之一,下面通过测试主要了解该工具的可靠性以及存在的问题,是否在RDS上支持。
栏目: MySQL优化设计
九
04
九
04
MySql sql优化之order by desc/asc limit M
九
02
mysql sql优化之straight_join
在oracle中可以指定的表连接的hint有很多:ordered hint 指示oracle按照from关键字后的表顺序来进行连接;leading hint 指示查询优化器使用指定的表作为连接的首表,即驱动表;use_nl hint指示查询优化器使用nested loops方式连接指定表和其他行源,并且将强制指定表作为inner表。
在mysql中就有之对应的straight_join,由于mysql只支持nested loops的连接方式,所以这里的straight_join类似oracle中的use_nl hint。mysql优化器在处理多表的关联的时候,很有可能会选择错误的驱动表进行关联,导致了关联次数的增加,从而使得sql语句执行变得非常的缓慢,这个时候需要有经验的DBA进行判断,选择正确的驱动表,这个时候straight_join就起了作用了,下面我们来看一看使用straight_join进行优化的案例。
九
02
化繁为简-优化sql
八
08
MySQL Innodb数据库性能实践——VARCHAR vs CHAR
七
31
index merge的补充说明
七
10
SQL去除重复删除重复数据(高效,大数据)
五
20
MySQL5.6复制之Binary Log Group Commit
五
16
案例:MySQL优化器如何选择索引和JOIN顺序
三
11