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 + 表名 验证一下就可以了)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)