当前位置: 首页 > 后端技术 > Python

MySQL主从复制结构下,如何判定是异步复制还是半同步复制?

时间:2023-03-26 11:32:23 Python

undefinedowlock/deadlock信息(开启innodb_status_output_locks选项)也会以追加方式写入错误日志,可能会导致错误日志文件过大,请注意这一点4.innodb_status.xxx的xxx是当前mysqld的pid,即innodb_status.pid5。MySQL在正常关闭时会自动删除innodb_status.pid文件。当mysqld异常关闭时,会留下上次启动的innodb_status.pid文件。多次异常关闭后,data目录下会生成很多innodb_status.pid文件3、mysql参数eqrangeindexdivelimit的作用以及如何理解indexdive?首先解释一下什么是indexdive:在MySQL中,只要有范围搜索的方法,都可以使用indexdive来估计范围内的行数。方法是找出范围的起点和终点,并计算它们之间的线数。这个技巧比较准确,所以也是制定好的执行计划的基础。参数eq_range_index_dive_limit限制了indexdive的等价条件的最大值+1,1。当等价条件的个数大于等于eq_range_index_dive_limit时,优化器会直接使用statistics。2.当eq_range_index_dive_limit设置为0时,优化器会一直执行索引潜水而不是索引统计。例如下面的SQL:select*fromtwherecol_nameIN(val1,...,valN),当eq_range_index_dive_limit为N+1时,优化器会使用indexdive来计算执行计划costindexdive的适用条件有如下形式(1)col_nameIN(val1,...,valN)(2)col_name=val1OR...ORcol_name=valNcol_name8.0后为非唯一索引且优化器满足以下条件索引潜水可跳过,但8.0之前无法避免索引跳水:查询时只访问一张表,而不是多表关联强制索引(一个索引)没有子查询,不涉及全文索引,没有GROUP-BY或DISTINCT,没有ORDER-BY4.请用python语句将:a=[[1,2,3],[4,5,6],[7,8,9],[11,12,13]]转换为[[1,4,7,11],[2,5,8,12],[3,6,9,13]](1)第三方库numpya=[[1,2,3],[4,5,6],[7,8,9]]将numpy导入为npnp.mat(a).Tmatrix([[1,4,7],[2,5,8],[3,6,9]])(2)列表理解a=[[1,2,3],[4,5,6],[7,8,9]][[row[i]forrowina]foriinrange(len(a[0]))][[1,4,7],[2,5,8],[3,6,9]]5.在做SQL优化时,你通常使用哪些简单有效的方法?手段呢?(一)SELECT掌握范式与JOIN的关系可以区分单表查询与JOIN的关系1.单表表SELECT(1)查询列是否包含无用部分(2)检查执行计划是否使用了索引(3)包含ORDERBYLIMIT,可以考虑延迟JOIN2、多表JOIN查询(1)判断驱动表(2)被驱动表必须包含索引(3)减少JOIN次数,尤其是带GROUPBY的SQL,可以考虑先聚合再JOIN(2)INSERT1,这与磁盘IO有很大关系2.如果INSERTSELECT结构慢,先检查SELECT(3)UPDATE1.不要更新大东西,适当分批进行2.检查是否存在锁竞争3.不要使用带WHERE条件的子查询,改JOIN(4)DELETE1.可以考虑批量删除,创建表结构后重命名2.不要更新大东西,适当分批进行3.检查是否存在锁竞争4.不要使用子查询有WHERE条件,改成JOIN详情:视频播放?《资深DBA带你学习SQL开发和优化》6.MySQL主从复制结构下,如何判断是异步复制还是半同步复制?半同步监控可以使用如下方法:mysql>showglobalstatuslike'%Rpl_semi%';+-------------------------------------------+---------+|变量名|价值|+--------------------------------------------+--------+|Rpl_semi_sync_master_clients|1||Rpl_semi_sync_master_net_avg_wait_time|0||Rpl_semi_sync_master_net_wait_time|0||Rpl_semi_sync_master_net_waits|2|||Rpl_semi_sync_master_no_times|1||Rpl_semi_sync_master_no_tx|1||Rpl_semi_sync_master_status|关闭||Rpl_semi_sync_master_timefunc_failures|0||Rpl_semi_sync_master_tx_avg_wait_time|38391398||Rpl_semi_sync_master_tx_wait_time|76782796||Rpl_semi_sync_master_tx_waits|2||Rpl_semi_sync_master_wait_pos_backtraverse|0||Rpl_semi_sync_master_wait_sessions|0||Rpl_semi_sync_master_yes_tx|2||Rpl_semi_sync_slave_status|关|+----------------------------------------+--------+1、Rplsemisyncmasterstatus表示主库是否半同步2、Rplsemisyncslavestatus表示是否从库启用增强半同步。3.Rplsemisyncmastastertxavgwaittime表示事务等待slave响应的平均等待时间。如果数值比较大,可以检查一下网络情况。4.Rplsemisyncmastertxwaits表示slave响应的事务数。如果该值快速增加5.Rplsemisyncmasteryestx表示增强型半同步复制下的事务数。6.Rplsemisyncmasternotx表示异步复制的事务数。如果值发生变化,还需要检查半同步复制是否退化为异步复制,退化时的错误日志也可以看到。7、rplsemisyncmasterstatus表示当前节点是否是半同步master。7、MySQL半同步退化为异步复制后,网络恢复后会自动切换到半同步复制吗?先公布答案:是1、即使会自动恢复,还是需要监控,避免异步复制下主从切换导致数据丢失。2、在金融支付环境下,建议将rpl_semi_sync_master_timeout设置大一些,避免退化成异步复制对文章感兴趣的朋友可以加我,这里有鸭子愿意交朋友!微信:lvqingshan_

最新推荐
猜你喜欢