`

MySQL数据库简介

阅读更多

一.MySQL数据库简介

1.MySQL数据库是一款免费、高效、灵活的易用的RDBMS。The world's most popular open source database。

2.全球有超过1500万台运行着MySQL的服务;全球十大Web站点中有九个使用MySQL;全球十大ISV(ISV意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业,如微软、甲骨文等)中有八个使用MySQL;最大的云端数据库;80%的Hadoop大数据平台与MySQL集成。

3.MySQL主流分支有:Oracle官方版本、Percona 、MariaDB、Drizzle等。


4.MySQL结构层次


5.MySQL访问路径

  当客户端链接上mysql服务端时,系统为其分配一个链接描述符thd,用以描述客户端的所有信息,将作为参数在各个模块之间传递。一个典型的客户端查询在MySQL的主要模块之间的调用关系如图所示。

6.存储引擎机制

  MySQL提供一个抽象层,允许不同的存储应请使用相同的API对表进行访问。该接口通过一个被称为Handler的抽象类来实现,该处理器提供了一些可实现基本操作的方法,入打开和关闭表,连续扫描记录,按照键值检索记录,存储记录以及删除记录。

  每个存储引擎都执行处理器的一个子类以实现接口方法,以便将处理器操作转化为特定存储引擎的此层次存储/检索API调用

  MySQL的主要存储引擎有:MyISAM(非事务引擎)/InnoDB(事务引擎)/Archive(归档引擎)/Memory(内存引擎)/NDB(集群引擎)/memcache(内存)/TukoDB(事务)

  其他特殊引擎:Infobirght(数据仓库引擎)

 

二.MySQL高级特性

1.存储过程

  官方文档:http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html

  变量定义顺序必须是:存储函数变量、游标定义、游标异常、程序主体

  定义务必加上授权: CREATE DEFINER=‘root’@‘localhost’ PROCEDURE sp();

  存储过程相关权限:被操作表的相关权限及EXECUTE(执行权限),ALTER ROUTINE(修改权限),CREATE ROUTINE(创建权限)。

  不能使用动态游标, CURSOR中不能有动态的表名。

  查看创建存储过程/函数的语句:SHOW CREATE PROCEDURE/FUNCTION ps;

  查看所有存储过程/函数:SHOW PROCEDURE/FUNCTION STATUS [LIKE ps];

  调用存储过程:CALL sp();

  调用存储函数:SELECT sp();

 

2.触发器

        官方文档:http://dev.mysql.com/doc/refman/5.1/en/create-trigger.html

        定义务必加上授权: CREATE DEFINER=`root`@`localhost` Trigger tgr();

        定义语句:CREATE DEFINER=`root`@`localhost` Trigger tgr()

                          AFTER/BEFORE  INSERT/UPDATE/DELETE ON table FOR EACH ROW;

        数据调用:NEW.*(更新后数据) OLD.*(更新前数据)

        行级触发器,每一行都会触发动作

        内部可以调用存储过程和函数

        每种类型的Trigger在一张表上只能建立一个

 

3.分区表

        官方文档:http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html

        分区类型:

        a.RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。

        b.LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。

        c.HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。

        d.KEY 分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

        e.子分区:子分区是分区表中每个分区的再次分割。

 

三.SQL最佳实践

        1.尽量将子查询转化为链接查询,除非子查询只返回极少的记录。

        2.不要在条件里写不必要的条件。

        3.没有必要排序的分组采用ORDER BY null指定不排序。

        4.OR条件若不能正确的走索引,则拆分为两条SQL。

        5.不在乎重复的情况下,UNION ALL可以避免UNION要做的排序。

        6.没必要的时候不要做外连接,内连接效率比外连接高。

 

四.索引优化

        1.MySQL只在认为走索引可以筛去85%以上数据的时候,才使用索引,如果达不到这个标准,索引是无意义的。

        2.前缀索引:MySQL可以利用索引的前向部分,但不可以利用后向部分,不支持反向索引。例如:SELECT col2 FROM table WHERE col1=1;可以使用索引(col1,col2),但不可以使用(col2,col1)。

        3.不等比较的优化:如果索引的前向部分在WHERE中是等于,那么可以使用索引,如果索引的前向部分在WHERE中是不等比较,那么不可以为后面的等于比较使用索引。例如:SELECT col1 FROM table WHERE col2=1 AND col3 >10;可以完全使用索引(col2,col3),但不可以使用(col3,col2)的前缀。

        4.排序的优化:可以在条件是等于的时候继续使用索引排序,或者条件中的不等于字段就是排序字段。例如:SELECT col1 FROM table WHERE col2=1 AND col3>0 ORDER BY col3,可以完全使用索引(col2,col3)避免排序。但条件是col2<1 AND col3=0 ORDER BY col3时则只能使用col2排除记录,不可以用来排序。GROUP BY/DISTINCT也是以排序为基础,优化同上。

 

五.MySQL的高可用

1.MySQL复制技术

        MySQL Replication主要通过将binlog传输到从库中并进行apply,主要的线程为IO_thread和SQL_thread。


2.级联复制


3.MySQL半同步


4.复制过滤


5.常见的MySQL复制架构

基于MySQL Replication,结合其他技术实现高,如:Lvs、Keepalived、 HeartBeat、 Mysql Porxy、HAproxy、DBproxy、DRBD、MMM/MHA 等,主要就是实现负载均衡和故障转移

a.一主一从

b.一主多从

c.级联复制

d.双主复制


e.



        注意:红色线标识需要DBA去修复的同步,红色边缘的机器是需要DBA去处理的机器。

        对于主库Crash,Standy接管较快,不用crash恢复的过程 

        对于Slave在发生切换后,可以正常的同步

        数据从一份变成了两份

6.目前常见的高可用技术架构

        a.基于Master/Slave构建的主从

        b.基于MMM/MHA构建的多主自动切换的主从

        c.基于LVS/Haproxy,Percona-Cluster/MariaDB Galera Cluster,Master/Slave构建的主从

        d.基于域名系统加Master/Slave, Percona-Cluster/MariaDB Galera Cluster构建的数据库托管系统

        e.基于Proxy系统构建的代理拆分系统

        f.基于DRBD+Keepalive构建的集群

        g.基于共享存储构建的集群

        h.官方的NDBCluster

 

六.数据0丢失

1.方案一

        INNODB_FLUSH_LOG_AT_TRX_COMMIT=1

        sync_binlog=1 innodb_flush_method=O_DIRECT + 

        半同步

2.方案二


        说明:两台master上的my.cnf配置一样,存储被活跃的节点挂载

        Standy机器不挂载磁盘,启动MySQL事例。在这个结构遇到最严重问题:主库crash了,Standy接管后,也需要很长时间的恢复过程。如果利用Percona-Server或是innodb-plugin,这个也算是一个好的架构。

  • 大小: 7 KB
  • 大小: 7 KB
  • 大小: 340 KB
  • 大小: 88.3 KB
  • 大小: 159.5 KB
  • 大小: 254 KB
  • 大小: 44.5 KB
  • 大小: 250.9 KB
  • 大小: 5.4 KB
  • 大小: 15.2 KB
  • 大小: 6.2 KB
  • 大小: 6.6 KB
  • 大小: 58.5 KB
  • 大小: 231.6 KB
  • 大小: 56.1 KB
分享到:
评论

相关推荐

    MySQL数据库简介.doc

    MySQL数据库简介 MySQL数据库简介 MySQL是一个开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言—结构化查询语言(SQL)进行数据库管理。 MySQL数据库系统的优势有很多,如速度、可靠性和适应性等。...

    万年历mysql数据库

    万年历mysql数据库执行语句,1900年~2050年

    MySQL数据库简介-MySQL OCP第一课

    MySQL数据库简介-MySQL OCP第一课

    mysql数据库结构对比工具

    支持的数据库:MS SQL Server、 PosgresSql、MySQL 数据库数据对比工具:可以针对两个数据进行表结构和数据的对比。1、结构对比:如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有字段的增加...

    数据库MySQL入门.pdf

    MySQL数据库产品内容丰富,功能强大。MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。 MySQL用户管理: 1. 新建用户:可以使用命令行方式或图形...

    MySQL数据库安装包

    一、MySQL数据库简介 MySQL是一款开源、免费的SQL数据库管理系统,由瑞典的MySQL AB公司开发,目前已被Oracle公司收购。它以高效率、稳定性和可扩展性著称,支持多种操作系统,包括Windows、Linux、macOS等。 二、...

    Mysql数据库111

    Mysql数据库111

    2023整理过-新华字典mysql数据库

    2023整理过-新华字典mysql数据库 增加字段注释

    MySQL数据库的简介

    MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业...

    腾讯云数据库mysql产品认证答案

    腾讯云数据库mysql产品认证答案涵盖了mysql数据库、腾讯云、云数据库、mysql数据库认证和腾讯云云数据库产品等方面的知识点,是一份非常重要的认证考试答案,能够帮助考生更好地掌握mysql数据库管理和维护知识。

    MySQL数据库8.0.33版本

    MySQL数据库8.0.33版本

    mysql数据库安装教程

    mysql安装教程

    周公解梦完整数据库mysql

    周公解梦完整版本,mysql数据库信息,大概9000多条数据,带分类,名称,详细解析等。 周公解梦数据库.sql脚本文件,直接可以导入mysql,其他的数据库或许需要细微的修改。

    MySQL数据库复习资料

    MySQL数据库复习资料

    MySQL数据库思维导图

    MySQL数据库思维导图

    MYSQL数据库复习资料

    MYSQL数据库复习资料

    资料-MySQL数据库、视频-MySQL数据库

    资料-MySQL数据库 视频-MySQL数据库 文档 运维篇.rar 进阶篇.rar 基础篇.rar MySQL-运维篇.pdf MySQL-进阶篇.pdf MySQL-基础篇.pdf MySQL存储过程.xmind 文档 运维篇.rar 进阶篇.rar 基础篇.rar 资料-MySQL数据库 ...

    MYSQL数据库树桩表

    MYSQL数据库结构表

    MySQL数据库.xmind

    MySQL数据库.xmind

    MySQL数据库绘图表

    绘图

Global site tag (gtag.js) - Google Analytics