一.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,这个也算是一个好的架构。
相关推荐
MySQL数据库简介 MySQL数据库简介 MySQL是一个开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言—结构化查询语言(SQL)进行数据库管理。 MySQL数据库系统的优势有很多,如速度、可靠性和适应性等。...
万年历mysql数据库执行语句,1900年~2050年
MySQL数据库简介-MySQL OCP第一课
支持的数据库:MS SQL Server、 PosgresSql、MySQL 数据库数据对比工具:可以针对两个数据进行表结构和数据的对比。1、结构对比:如开发库和正式库之间的结构和数据同步,此工具可以告诉您哪个表结构有字段的增加...
MySQL数据库产品内容丰富,功能强大。MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。 MySQL用户管理: 1. 新建用户:可以使用命令行方式或图形...
一、MySQL数据库简介 MySQL是一款开源、免费的SQL数据库管理系统,由瑞典的MySQL AB公司开发,目前已被Oracle公司收购。它以高效率、稳定性和可扩展性著称,支持多种操作系统,包括Windows、Linux、macOS等。 二、...
Mysql数据库111
2023整理过-新华字典mysql数据库 增加字段注释
MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业...
腾讯云数据库mysql产品认证答案涵盖了mysql数据库、腾讯云、云数据库、mysql数据库认证和腾讯云云数据库产品等方面的知识点,是一份非常重要的认证考试答案,能够帮助考生更好地掌握mysql数据库管理和维护知识。
MySQL数据库8.0.33版本
mysql安装教程
周公解梦完整版本,mysql数据库信息,大概9000多条数据,带分类,名称,详细解析等。 周公解梦数据库.sql脚本文件,直接可以导入mysql,其他的数据库或许需要细微的修改。
MySQL数据库复习资料
MySQL数据库思维导图
MYSQL数据库复习资料
资料-MySQL数据库 视频-MySQL数据库 文档 运维篇.rar 进阶篇.rar 基础篇.rar MySQL-运维篇.pdf MySQL-进阶篇.pdf MySQL-基础篇.pdf MySQL存储过程.xmind 文档 运维篇.rar 进阶篇.rar 基础篇.rar 资料-MySQL数据库 ...
MYSQL数据库结构表
MySQL数据库.xmind
绘图