标签:MySQL进阶
数据库水平切分架构实践
单Key业务,数据库水平切分架构实践 本文将以“用户中心”为例,介绍“单KEY”类业务,随着数据量的逐步增大,数据库性能显著降低,数据库水平切分相关的架构实践: 如何来实施水平切分 水平切分后常见的问题 典型问题的优化思路及实践 一、用户中心 用户中心是一个非常常见的业务,主要提供用户注册、登录、信息查询与修改的服务,其核心元数据为: User(uid,……
MySQL分区增删改查操作
###添加删除range分区 (1) 创建一个分区 CREATE TABLE titles ( emp_no INT NOT NULL, title VARCHAR(50) NOT NULL, from_date DATE NOT NULL, to_date DATE, KEY (emp_no), PRIMARY K……
数据库设计范式与反范式
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。关系模型的发明者埃德加·科德最早提出这一概念,并于1970年代初定义了第一范式、第二范式和第三范式的概念,还与Raymond F. Boyce于1974年共同定义了第三范式的改进范式——BC范式。 除外还包括针对多值依赖的第四范式,连……
MySQL表分区详解
一、MySQL分区表介绍 分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。 分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、……
从原则、方案、策略及难点阐述分库分表
一、分库分表原则 关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。在互联网行业海量数据和高并发访问的考验下,聪明的技术人员提出了分库分表技术(有些地方也称为Sharding、分片)。同时,流行的分布式系统中间件(例如MongoDB、ElasticSear……
MySQL交换分区使用
MySQL 5.6开始支持ALTER TABLE … EXCHANGE PARTITION语句。该语句允许分区或子分区中的数据与另一个非分区的表中的数据进行交换。如果非分区表中的数据为空,那么相当于将分区中的数据移动到非分区表中。若分区表中的数据为空,则相当于将外部表中的数据导入到分区中。 要使用ALTER TABLE … EXCHA……
MySQL触发器(trigger)
一、触发器介绍 MySQL的触发器和存储过程一样,都是嵌入到MySQL的一段程序,触发器是个特殊的存储过程。它们不同的是执行存储过程要使用CALL语句来调用,而触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE和DELETE语句。如果定义了触发程序,当对表执行INSERT、DELETE或UPDATE语句时,将激活触发程序。可以将触发程序设计……
MySQL视图(view)
一、视图的含义 在MySQL数据库中,视图(view)是一个命名的虚拟表,它由一个SQL查询来定义,或者说视图是从数据库中一个或多个表中导出来的表,并且视图还可以从已经存在的视图的基础上定义。视图可以当表使用,对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相对的基本表的数据也要发送变化;同时,若基本表的数据发送……
MySQL存储过程和存储函数(二)
一、流程控制的使用 在存储过程中可以定义流程控制语句,流程控制语句用来根据条件控制语句的执行,MySQL中的用来构造控制流程的语句有:IF语句、CASE语句、LOOP语句、WHILE语句、LEAVE语句、ITERATE语句和REPEAT语句。每个流程中可能包含一个单独语句,或者是使用BEGIN…END构造的复合语句,构造可以被嵌套。下面介绍这些流程控制语句 ……
MySQL存储过程和存储函数(一)
一、存储过程与函数介绍 简单地说,存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。 存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别是CREATE PROCEDURE和CREATE FUNCTION。 MySQL存储过程和函数有什么区别?在本质上他们都是存储程序,函数只能通过return语句返回单……