五种MySQL数据库可靠性方案的分析和比较,计划任务

   查看event是否开启

  MySQL采用了基于开销的优化器,以确定处理查询的最解方式。在很多情况下,MySQL能够计算最佳的可能查询计划,但在某些情况下,MySQL没有关于数据的足够信息,不得不就数据进行“有教养”的估测。

  这篇文章主要从基本情况、成本、优缺点和应用场合等方面对5种MySQL的可靠性方案进行了详细的分析和比较,另外,本文对MySQL数据库的开发和管理有一定的借鉴作用。详细内容请大家参考下文:

  代码如下

  当MySQL未能做“正确的”事时,可使用下述工具来帮助MySQL:

  1.MySQL Clustering(ndb-cluster stogare)

  show variables like ‘%sche%’;

  使用EXPLAIN语句获取关于MySQL如何处理查询的信息。要想使用它,可在SELECT语句前添加关键字EXPLAIN:

  简介:

  将事件计划开启

  mysql> EXPLAIN SELECT * FROM t1, t2 WHERE t1.i = t2.i;

  MySQL公司以存储引擎方式提供的高可靠性方案,是事务安全的,实时复制数据,可用于需要高可靠性及负载均衡的场合。该方案至少需要三个节点服务器才能达到较好的效果。

  代码如下

  使用ANALYZE TABLE tbl_name,为已扫描的表更新键分配。

  成本:

  set global event_scheduler =1;

  为已扫描的表使用FORCE
INDEX,通知MySQL:与使用给定的索引相比,表扫描开销昂贵。

  节点服务器对RAM的需求很大,与数据库大小呈线性比例;

  创建存储过程test

  SELECT * FROM t1, t2 FORCE INDEX (index_for_column)

  最好使用千兆以太网络;

  代码如下

  WHERE t1.col_name=t2.col_name;

  还需要使用Dolphin公司提供的昂贵的SCI卡。

  CREATE PROCEDURE test ()

  USE INDEX和IGNORE INDEX也有一定的帮助。

  优点:

  BEGIN

  你可以调节全局或线程类系统变量。例如,用“–max-seeks-for-key=1000”选项启动mysqld,或使用“SET
max_seeks_for_key=1000”来通知优化器:假定任何表扫描均不会导致1000个以上的键搜索。

  可用于负载均衡场合;

  update examinfo SET endtime = now() WHERE id = 14;

  可用于高可靠性场合;

  END;

  高伸缩性;

  创建event e_test

  真正的数据库冗余;

  代码如下

  容易维护。

  create event if not exists e_test

  缺点:

  on schedule every 30 second

  随着数据库的变大,对RAM的需求变得更大,因此成本很高;

  on completion preserve

  速度:

  do call test();

  几乎
比典型的单独服务器(无千兆以太网,无SCI卡,存储引擎相关的限制少)慢10倍。

  每隔30秒将执行存储过程test,将当前时间更新到examinfo表中id=14的记录的endtime字段中去.

  应用场合:

  关闭事件任务

  冗余,高可靠性,负载均衡

  代码如下

  2. MySQL / GFS-GNBD/ HA (Active/Passive)

  alter event e_test ON

  简介:

  COMPLETION PRESERVE DISABLE;

  如果多个MySQL服务器使用共享硬盘作为数据存储,此方案如何?

  开户事件任务

  GFS/GNBD可以提供所需的共享硬盘。

  代码如下

  GFS是事务安全的文件系统。同一时刻你可以让一个MySQL使用共享数据。

  alter event e_test ON

  成本:

  COMPLETION PRESERVE ENABLE;

  最多n台高性能服务器的成本,其中一个激活的,其他作为备份服务器。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图