MySQL中的大表和大事务

MySQL中的大表和大事务,第1张

    千万行数据,表数据巨大。

                1、慢查询的产生:很难在一定时间内过滤出所需要的数据。

                2、建立索引需要更长的时间。

                                Mysql版本<5.5 建立索引会锁表

                                Mysql版本>=5.5 谁让不会锁表,但会引起主从延迟。

                3、修改表结构需要长时间锁定表

                4、会造成长时间的主从延迟。

                5、影响正常的数据 *** 作。

                1、分库分表把一张大表分为多个小表

                    难点:

                        分表主键的选择

                        分表后跨分区数据 的查询和统计

                2、大表的历史数据归档

                   好处:

                        减少对前后端业务的影响。

                   难点:

                        归档时间点的选择

                        如何进行归档 *** 作。

        运行时间比较长, *** 作的数据比较多的事务

            锁定太多的数据,造成大量的阻塞和锁超时。

            回滚时间比较长

            执行时间比较长,容易造成主从延迟。

            避免一次处理太多的数据。

            移除不必要在事务中 *** 作的select *** 作

查看 MySQL 客户端的事务提交方式命令:select @@autocommit

修改 MySQL 客户端的事务提交方式为手动提交命令:set @@autocommit = 0

(注:0 表示手动提交,即使用 MySQL 客户端执行 SQL 命令后必须使用commit命令执行事务,否则所执行的 SQL 命令无效,如果想撤销事务则使用 rollback 命令。1 表示自动提交,即在 MySQL 客户端不在需要手动执行 commit 命令。)

MySQL 在自动提交模式下,每个 SQL 语句都是一个独立的事务。

注意:

1、手动设置set @@autocommit = 0,即设定为非自动提交模式,只对当前的mysql命令行窗口有效,打开一个新的窗口后,默认还是自动提交;

2、对于非自动提交模式,比如在命令行中添加一条记录,退出命令行后在重新打开命令行,之前插入的记录是不在的。(用select * from + 表名 验证一下就可以了)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7316603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存