mysql自定义函数

第九章 备份和恢复

落花浮王杯 提交于 2019-12-04 15:43:32
一.备份的原因 运维工作的核心简单概括就两件事: 1)第一个是保护公司的数据. 2)第二个是让网站能7*24小时提供服务(用户体验)。  备份的原因 1)备份就是为了恢复。 2)尽量减少数据的丢失(公司的损失) 回到顶部(go to top) 二.备份的类型 1.冷备份: 这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。 2.温备份: 这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。 3.热备份: 这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。 回到顶部(go to top) 三.备份的方式 1.逻辑备份: 基于SQL语句的备份 1)binlog 2)into outfile mysql> select * from world.city into outfile '/tmp/world_city.data'; 3

mysql备份

泄露秘密 提交于 2019-12-04 13:29:25
一.备份的原因 运维工作的核心简单概括就两件事: 1)第一个是保护公司的数据. 2)第二个是让网站能7*24小时提供服务(用户体验)。 1)备份就是为了恢复。 2)尽量减少数据的丢失(公司的损失) 二.备份的类型 冷备份: 这些备份在用户不能访问数据时进行,因此无法读取或修改数据。这些脱机备份会阻止执行任何使用数据的活动。这些类型的备份不会干扰正常运行的系统的性能。但是,对于某些应用程序,会无法接受必须在一段较长的时间里锁定或完全阻止用户访问数据。 停库,停服务,备份 温备份: (锁表) 这些备份在读取数据时进行,但在多数情况下,在进行备份时不能修改数据本身。这种中途备份类型的优点是不必完全锁定最终用户。但是,其不足之处在于无法在进行备份时修改数据集,这可能使这种类型的备份不适用于某些应用程序。在备份过程中无法修改数据可能产生性能问题。 热备份: 这些动态备份在读取或修改数据的过程中进行,很少中断或者不中断传输或处理数据的功能。使用热备份时,系统仍可供读取和修改数据的操作访问。 三.备份的方式 逻辑备份: 基于SQL语句的备份 1)binlog 2)into outfile mysql> select * from world.city into outfile '/tmp/world_city.data'; #配置文件中创建/tmp 3)mysqldump只支持全备 4

PHP常用单词

怎甘沉沦 提交于 2019-12-04 09:17:20
(一) 原始数据类型。 A. 四种标量类型: a) boolean (布尔型) b) integer (整型) c) float (浮点型,也称作 double ) d) string (字符串) B. 两种复合类型: a) array (数组) b) object (对象) C. 特殊类型: a) resource (资源) b) NULL (无类型) D. 伪类型 : a) mixed (混合类型) b) number (数字类型) e) callback (回调类型) (二) 常用内部函数: A. 字符串函数: f) 输出与格式化:echo print printf print_r var_dump. g) 字符串去除与填充:trim ltrim rtrim str_pad h) 字符串连接与分割:implode join explode str_split i) 字符串截取:substr strchr strrchr, j) 字符串替换:str_replace substr_replace k) 字符串长度与位置: strlen strpos strrpos l) 字符转换:strtolower strtoupper lcfirst ucfirst ucwords m) 特殊字符处理:nl2br addslashes htmlspecialchars

MySQL 语句执行过程详解

纵然是瞬间 提交于 2019-12-04 05:34:48
MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 MySQL InnoDB 锁 MySQL InnoDB MVCC MySQL InnoDB 实现高并发原理 MySQL InnoDB 快照读在RR和RC下有何差异 当客户端向 MySQL 发送一个请求的时候,MySQL 的执行过程如下图所示: MySQL 客户端/服务端通信 通信机制 MySQL 客户端与服务端的通信方式是 “ 半双工 ”。 全双工:双向通信,发送同时也可以接收 半双工:双向通信,同时只能接收或者是发送,无法同时做操作 单工:只能单一方向传送 一旦一端开始发送消息,另一端要接收完整个消息才能响应它,所以我们无法也无须将一个消息切成小块独立发送,也没有办法进行流量控制。 客户端用一个单独的数据包将查询请求发送给服务器,所以当查询语句很长的时候,需要设置 max_allowed_packet 参数。 但是需要注意的是,如果查询实在是太大,服务端会拒绝接收更多数据并抛出异常。 与之相反的是,服务器响应给用户的数据通常会很多,由多个数据包组成。但是当服务器响应客户端请求时,客户端必须完整的接收整个返回结果,而不能简单的只取前面几条结果,然后让服务器停止发送。 因而在实际开发中

MySQL之存储过程

末鹿安然 提交于 2019-12-03 23:06:55
什么是存储过程: 一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法。存储过程是一段预编译好的代码,存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用 存储过程优势   存储过程把经常使用的SQL语句或业务逻辑封装起来,预编译保存在数据库中,当需要时从数据库中直接调用,省去了编译的过程   提高了运行速度   同时降低网络数据传输量 存储过程与自定义函数的区别   存储过程实现的过程要复杂一些,而函数的针对性较强   存储过程可以有多个返回值,而自定义函数只有一个返回值   存储过程一般可独立执行,而函数往往是作为其他SQL语句的一部分来使用 存储过程语句 1、创建存储过程   CREATE PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]])   routime_body   proc_parameter : [IN|OUT|INOUT] parameter_name type   其中IN表示输入参数,OUT表示输出参数,INOUT表示既可以输入也可以输出;param_name表示参数名称;type表示参数的类型 2、查看存储过程列表   SHOW PROCEDURE STATUS; 3、查看存储过程定义

MySQL之自定义函数

耗尽温柔 提交于 2019-12-03 23:04:51
MySQL函数,是一种控制流程函数,属于数据库用语言。 系统函数:   mysql5.6:https://dev.mysql.com/doc/refman/5.6/en/func-op-summary-ref.html   mysql5.7:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html 自定义函数    保存在mysql.proc表中    创建UDF     CREATE [AGGREGATE] FUNCTION function_name(parameter_name type, [parameter_name type,...])     RETURNS {STRING|INTEGER|REAL}     runtime_body    说明:     参数可以有多个,也可以没有参数     必须有且只有一个返回值 创建函数   示例:无参UDF   CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN “Hello World!”; 查看函数列表   SHOW FUNCTION STATUS; 查看函数定义   SHOW CREATE FUNCTION function_name 删除函数   DROP FUNCTION

数据库(分库分表)中间件对比

非 Y 不嫁゛ 提交于 2019-12-03 15:22:28
数据库(分库分表)中间件对比 https://www.cnblogs.com/cangqiongbingchen/p/7094822.html 基本概念:分区,分片,分表,分库 分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm。 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表呢,还是一张表。分区可以把表分到不同的硬盘上,但不能分配到不同服务器上。 优点:数据不存在多个副本,不必进行数据复制,性能更高。 缺点:分区策略必须经过充分考虑,避免多个分区之间的数据存在关联关系,每个分区都是单点,如果某个分区宕机,就会影响到系统的使用。 分片:对业务透明,在物理实现上分成多个服务器,不同的分片在不同服务器上 个人感觉跟分库没啥区别,只是叫法不一样而已,值得一提的是关系型数据库和nosql数据库分片的概念以及处理方式是一样的吗? 请各位看官自行查找相关资料予以解答 分表:当数据量大到一定程度的时候,都会导致处理性能的不足,这个时候就没有办法了,只能进行分表处理。也就是把数据库当中数据根据按照分库原则分到多个数据表当中, 这样,就可以把大表变成多个小表,不同的分表中数据不重复,从而提高处理效率。 分表也有两种方案: 1. 同库分表:所有的分表都在一个数据库中,由于数据库中表名不能重复

Mysql索引优化简单介绍

心已入冬 提交于 2019-12-03 14:10:27
一.关于MySQL联合索引 总结记录一下关于在MySQL中使用联合索引的注意事项. 如:索引包含表中每一行的last_name、first_name和dob列,即key(last_name, first_name, dob)。 以下情况可以用到索引: (1)匹配全值:对索引中的所有列都指定具体的值。 (2)匹配最左前缀:你可以利用索引查找last name为Allen的人,仅仅使用索引中的第1列。 (3)匹配列前缀:你可以利用索引查找last name以J开始的人,这仅仅使用索引中的第1列。 (4)匹配值的范围查询:可以利用索引查找last name在Allen和Barrymore之间的人,仅仅使用索引中第1列。 (5)匹配部分精确而其它部分进行范围匹配:可以利用索引查找last name为Allen,而first name以字母K开始的人。 (6)仅对索引进行查询:如果查询的列都位于索引中,则不需要读取元组的值。 由于B-树中的节点都是顺序存储的,所以可以利用索引进行查找(找某些值),也可以对查询结果进行ORDER BY。当然,使用B-tree索引有以下一些限制: (1)查询必须从索引的最左边的列开始。关于这点已经提了很多遍了。例如你不能利用索引查找在某一天出生的人。 (2)不能跳过某一索引列。例如,你不能利用索引查找last name为Smith且出生于某一天的人。 (3

mysql存储过程。。

亡梦爱人 提交于 2019-12-03 05:31:37
MySQL 5.0 版本开始支持存储过程。 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 优点 存储过程可封装,并隐藏复杂的商业逻辑。 存储过程可以回传值,并可以接受参数。 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。 存储过程可以用在数据检验,强制实行商业逻辑等。 缺点 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。 存储过程的性能调校与撰写,受限于各种数据库系统。 一、存储过程的创建和调用 存储过程就是具有名字的一段代码,用来完成一个特定的功能。 创建的存储过程保存在数据库的数据字典中。 创建存储过程 CREATE [ DEFINER = { user | CURRENT_USER }]   PROCEDURE sp_name ( [ proc_parameter [,...]] ) [ characteristic ...] routine_body proc_parameter : [ IN

pymysql内置功能

匿名 (未验证) 提交于 2019-12-02 22:06:11
视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。 #语法:CREATE VIEW 视图名称 AS SQL语句 create view teacher_view as select tid from teacher where tname=‘李平老师‘; #于是查询李平老师教授的课程名的sql可以改写为 mysql> select cname from course where teacher_id = (select tid from teacher_view); +--------+ | cname | +--------+ | 物理 | | 美术 | +--------+ rows in set (0.00 sec) #!!!注意注意注意: #1. 使用视图以后就无需每次都重写子查询的sql,但是这么效率并不高,还不如我们写子查询的效率高 #2. 而且有一个致命的问题:视图是存放到数据库里的,如果我们程序中的sql过分依赖于数据库中存放的视图, 那么意味着,一旦sql需要修改且涉及到视图的部分,则必须去数据库中进行修改,而通常在公司中数据库有专门的DBA负责, 你要想完成修改,必须付出大量的沟通成本DBA可能才会帮你完成修改,极其地不方便 #修改视图,原始表也跟着改