MySQL的高可扩展和高可用

    面试题一

      MySQL分表和分区的工作原理,分表和分区的使用场景和优缺点。

    分区表的原理

      对用户而言,分区表时一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这对用户来说是透明的,每一个分区表都会使用一个独立的表文件。

      创建表时使用partition by 子句定义每个分区存放的数据,执行查询时,优化器会根据分区定义过滤那些没有我们需要的分区,这样查询只需要查询所需数据在的分区即可。

      分区的主要目的是将数据按照一个较粗的粒度分在不同的表中,这样可以将相关的数据存放在一起,而且如果想一次性删除整个分区的数据也很方便

      使用场景

        1、表非常大,无法全部存在内存,或者只在表的最后有热点数据,其他都是历史数据

        2、分区表的数据更容易维护,可以对独立的分区进行独立的操作

        3、分区表的数据可以分布在不同的机器上,从而高效使用资源

        4、可以使用分区表来避免某些特殊的瓶颈

        5、可以备份和恢复独立的分区

      缺点

        1、一个表最多只能有1024个分区

        2、5.1版本中,分区表表达式必须是整数,5.5九二一使用列分区

        3、分区字段中如果有主键和唯一索引列,那么主键列和唯一列都必须包含进来

        4、分区表中无法使用外键约束

        5、需要对现有表的结构修改

        6、所有分区都必须使用相同的存储引擎

        7、分区函数中可以使用的函数和表达式会有一些限制

        8、某些存储引擎不支持分区

        9、对于MyISAM 的分区表,不能使用load index into cache

        10、对于MyISAM表,使用分区表时需要打开更多的文件描述符

    分库分表的原理

      工作原理

       通过一些HASH算法或者工具实现将一张数据表垂直或者水平进行物理切分

      缺点:有些分表的策略基于应用层的逻辑算法,一旦逻辑算法改变,整个分表逻辑都会改变,扩展性较差。

         对于应用层来说,逻辑算法无疑增加开发成本

      适用场景

       1、单表记录条数达到百万千万级别时

       2、解决表锁的问题

       分表方式

        水平分割

          表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度

        使用场景

          1、表中的数据本身就有独立性,列如表中分别记录各个地区的数据或者不同时期的数据,特别时有些数据常用,有些不常用

          2、需要把数据存放在多个介质上

        水平分表缺点

          1、给应用增加复杂度,通常查询时需要多个表名,查询所有数据都需要union操作

          2、在许多数据库应用中,这种复杂性会超过它带来的优点,查询时会增加读一个索引层的磁盘次数

        垂直分表

          把主键和一些列放在一个表,然后把主键和另外的列放在另一个表中。

        使用场景

          1、如果一个表中某些列常用,而另外一些列不常用

          2、可以使数据行变小,一个数据页能存储更多数据,查询时减少I/O次数

         垂直分表缺点

          管理冗余列,查询所有数据需要join操作

    MySQL的复制原理及负载均衡

      MySQL主从复制工作原理

          在主库上把数据更改记录到二进制日志

        从库将主库的日志复制到自己的中继日志

        从库读取中继日志的事件,将其重放到从库数据中

      MySQL主从复制解决的问题

        数据分布:随意停止或开始复制,并在不同地理位置分布数据备份

        负载均衡:降低单个服务器的压力

        高可用和故障切换:帮助应用程序避免单点失败

        升级测试:可以使用更高版本的MySQL作为从库

PHP面试 MySQL的高可扩展和高可用的更多相关文章

  1. php面试专题---19、MySQL高可扩展和高可用考点

    php面试专题---19.MySQL高可扩展和高可用考点 一.总结 一句话总结: 要区别分区和分库分表,分区的话对用户是透明的,分库分表的话需要程序员做点事情,主从数据库同步的话借助的是二进制日志 1 ...

  2. 【转】单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...

  3. [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...

  4. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  5. (转载)MySQL数据库的几种常见高可用方案

    转自: https://yq.aliyun.com/articles/74454   随着人们对数据一致性的要求不断的提高,越来越多的方法被尝试用来解决分布式数据一致性的问题,如MySQL自身的优化. ...

  6. mysql主从复制,及扩展

    一.MySQL简单复制相关概念: 1. mysql复制的意义:Mysql复制是使得mysql完成高性能应用的前提 2. mysql复制的机制: SLAVE端线程: IO thread: 向主服务请求二 ...

  7. 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

    015-08-09 杨尚刚 高可用架构 此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美 ...

  8. MySQL/MariaDB数据库的MHA实现高可用实战

      MySQL/MariaDB数据库的MHA实现高可用实战 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL高可用常见的解决方案 1>.Multi-Master ...

  9. phpMyAdmin - 错误 您应升级到 MySQL 5.5.0 或更高版本,解决办法。。。

    折腾自己的个人网站,装了个数据库管理工具,遇到您应升级到 MySQL 5.5.0 或更高版本... 采用降级phpmyadmin版本的方法解决了: 查找phpmyadmin/libraries/com ...

随机推荐

  1. English-Words with 'ir'

    hire thirty thirteen third sir birthday shirt stir circle dirty skirt affirm affirmation affirmable ...

  2. Windows 08R2 IIS网站架设

    目录 目录 配置和安装IIS 环境设置 安装IIS服务器 网站的站点目录和欢迎页面 配置和安装IIS IIS是Windows的网站服务器,所以配置IIS服务的前提是需要一个网址.和DNS域名并添加主机 ...

  3. 关于Http请求Cookie问题

    在Http请求中,很多时候我们要设置Cookie和获取返回的Cookie,在这个问题上踩了一个很大的坑,主要是两个问题: 1.不能获取到重定向返回的Cookie: 2.两次请求返回的Cookie是相同 ...

  4. Linux下安装xwindow图形界面

    执行命令 yum -y groupinstall Desktop yum -y groupinstall "X Window System" 然后执行"startx&qu ...

  5. vue2.0 项目小总结

    最近做了一个vue的PC端的项目,不大,真正用到vue的东西也不是太多,逻辑处理用到了不少原生js东西. 1.图片渲染 后台返回base64格式数据,一开始绑定src,提示pic字段未定义,懵逼了好久 ...

  6. 转 使用Python的logging.config.fileConfig配置日志

    Python的logging.config.fileConfig方式配置日志,通过解析conf配置文件实现.文件 logglogging.conf 配置如下: [loggers]keys=root,f ...

  7. springCloud的使用08-----服务链路追踪(sleuth+zipkin)

    sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系. 利用这些信息 ...

  8. Fix invisible cursor issue in Ubuntu 13.10

    Fix invisible cursor issue in Ubuntu 13.10 Fixing this problem is rather too easy. Open a terminal ( ...

  9. 二维码相关---java生成二维码名片,而且自己主动保存到手机通讯录中...

    版权声明:本文为博主原创文章,未经博主credreamer 同意不得转载 违者追究法律责任. https://blog.csdn.net/lidew521/article/details/244418 ...

  10. ant打包遇到的问题

    \build\build.xml:350: Problem: failed to create task or type foreach Cause: The name is undefined. A ...