Mysql数据库存储原理

转载:https://blog.csdn.net/weixin_40612082/article/details/82179714

现在在做数据库服务器的开发工作,今天被问到存储过程,当时只是简单地回答了下,在网上搜索了下资料,才对存储过程有了新的认识。转载内容如下:

Mysql储存过程是一组为了完成特定功能的SQL语句集,经过编译之后存储在数据库中,当需要使用该组SQL语句时用户只需要通过指定储存过程的名字并给定参数就可以调用执行它了,简而言之就是一组已经写好的命令,需要使用的时候拿出来用就可以了。想要快速的了解Mysql储存过程吗,就一同看一下下文的“Mysql储存过程-原理、语法、函数详细说明”吧!

一、Mysql储存过程简介: 
储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。存储过程通常有以下优点:

1)存储过程能实现较快的执行速度。 
如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 
心得:编译优化,快!

2)存储过程允许标准组件是编程。 
存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 
心得:封装与抽象,简单调用

3)存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 
心得:功能强大,逻辑强大

4)存储过程可被作为一种安全机制来充分利用。 
系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。 
心得:限制与安全

5)存储过程能过减少网络流量。 
针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

seo专题之开篇有益

想写这篇文章好久了.但一直不敢写,一怕自己技术有限误导了园子里的各位朋友.二怕自己文笔有限不能很好的表达自己的意图,但既然是抱着交流的态度来的,我还是愿意写一写这方面的文章与大家一起交流和分享,欢迎大家拍砖.做SEO没有什么高深技术可言,靠的是经验的不断累积,各位SEO高…

Rails不用localhost访问的时候很慢

修改文件/usr/lib/ruby/1.9.1/webrick/config.rb,找到:DoNotReverseLookup > nil,修改为:DoNotReverseLookup > true。转载于:https://blog.51cto.com/tianbymy/926589

一个application多个 URL

需求: 希望一个sharepoint网站,有多个网址去访问。例如:http://moss:8080/的网站,http://aphla.prismshareusa.int/ 和 http://aphla.carat.int/ 两个网站同时访问。 解决方法如下: 1)创建DNS…

gcc/g++编译器的优化

gcc/g编译器的优化 gcc提供了从O0-O3以及Os这几种不同的优化级别供大家选择 O0是编译器默认的设置 (1)、-O1:它主要对代码的分支,常量以及表达式等进行优化 (2)、-O2:尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间…

C#中Equals和==的区别 (面试官经常会问到)

首先对于值类型来说,并没有什么区别。区别只针对于引用类型。 一、值类型 1.对于值类型来说,两者比较的都是“内容”是否相同,也就是值是否相同(值类型只有存在栈上)。 二、引用类型 1.对于引用类型来说,本…

写的重采样文章被大佬看到了

他让我看重采样昨天写的重采样文章被一个大佬看到了,给我发了消息如下大佬是个技术原厂Linux方向的负责人,我在工作上遇到的好几次疑难杂症都是在他的指点下得到解决,而且平时讨论技术的时候,能感觉到他对技术问题理解很深。从他的…

根据IP地址获取主机名称

IP地址获得主机名称 1. 根据IP地址获得主机名称///<summary>///根据IP地址获得主机名称 ///</summary>///<param name"ip">主机的IP地址</param>///<returns>主机名称</returns>publicstringGetHostNameByIp(stringip) …

vector中的reserve() 与 resize()

resize()与reserve()都是vector容器中的方法&#xff1a; resize():改变了capacity()和size() reserve():增加了vector的capacity()&#xff0c;但是它的size()没有改变 #include <iostream> #include <stdio.h> #include <vector> #include<functiona…

【C++】考虑virtual函数以外的其他选择

假设你正在写一个视频游戏软件&#xff0c;游戏里有各种各样的人物&#xff0c;每个人物都有健康状态&#xff0c;而且不同的人物可能以不同的方式计算他们的健康指数&#xff0e;该如何设计游戏里的人物&#xff0c;主要如何提供一个返回人物健康指数的接口&#xff0e; 方法一…

不知道你们遇到这样的问题没?

最近在网上看到这样一个内容https://developer.horizon.ai/forumDetail/118363914936419003关于J5/J3/J2平台的底层软件地平线内部的释放计划和形式&#xff1f;您好&#xff1a;问题如题&#xff0c;我们当前在地平线J5平台展开进行的项目居多&#xff0c;跟贵司接触和合作的部…

shell脚本while read line的使用

#### 题目要求计算文档a.txt中每一行中出现的数字个数并且要计算一下整个文档中一共出现了几个数字。例如a.txt内容如下&#xff1a;12aa*lkjskdjalskdflkskdjflkjj我们脚本名字为 ncount.sh, 运行它时&#xff1a;bash ncount.sh a.txt输出结果应该为&#xff1a;20sum:2 ####…

boost::split()的使用方式

引用的头文件 <boost/algorithm/string.hpp> boost::split()函数用于切割string字符串&#xff0c;将切割之后的字符串放到一个std::vector<std::string> 之中&#xff1b; 有4个参数&#xff1a; 以boost::split(type, select_list, boost::is_any_of(",&…

Java中文与ASCII码的转换

今天在研究Java中编码的时候&#xff0c;看到了Java中ascii码的强大。写了一个CoderUtils.java&#xff0c;以后会扩展它。 package com.xingxd.study.test; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; /** * …

第四周:机器学习知识点回顾

前言&#xff1a; 讲真&#xff0c;复习这块我是比较头大的&#xff0c;之前的线代、高数、概率论、西瓜书、樱花书、NG的系列课程、李宏毅李沐等等等等…那可是花了三年学习佳实践下来的&#xff0c;现在一想脑子里就剩下几个名词就觉得废柴一个了&#xff0c;朋友们有没有同感…

移植linux内核到i.MX6ULL过程

本文描述移植NXP官方 linux 5.4 内核到i.MX6ULL开发板。一、NXP官方linux内核1. 下载 NXP官方linux仓库地址为&#xff1a;https://github.com/Freescale/linux-fslc/tree/5.4-2.1.x-imx。选择该分支下载zip包即可&#xff0c;不要整个仓库下载&#xff0c;太大了&#xff1a;2…

Go语言之进阶篇http服务器获取客户端的一些信息

1、http服务器获取客户端的一些信息 示例: package mainimport ("fmt""net/http" )//w, 给客户端回复数据 //r, 读取客户端发送的数据 func HandConn(w http.ResponseWriter, r *http.Request) {fmt.Println("r.Method ", r.Method)fmt.Println…

R学习之——R用于文本挖掘(tm包)

首先需要安装并加载tm包。 1、读取文本 x readLines("222.txt") 2、建立语料库 > rCorpus(VectorSource(x))> rA corpus with 7012 text documents 3、语料库输出&#xff0c;保存到硬盘 > writeCorpus(r) 4、查看语料库 > print(r) A corpus with 7012…

C#索引器(二)

索引器允许类和结构的实例按照与数组相同的方式进行索引&#xff0c;索引器类似与属性&#xff0c;不同之处在于他们的访问器采用参数。被称为有参属性。 简单的索引器实例&#xff1a; 索引器与属性的比较&#xff1a; 标示方式&#xff1a;属性以名称来标识&#xff0c;索引器…

C++中的定位放置new(placement new)

转载&#xff1a;https://www.cnblogs.com/weekbo/p/8533368.html 今天在使用new时&#xff0c;需要使用特定位置的一块内存&#xff0c;因此查了资料&#xff0c;发现该文章有帮助就现转载做一个备份。 一般来说&#xff0c;使用new申请空间时&#xff0c;是从系统的“堆”&…

学了STM32要继续学习Linux吗?

关注我的读者中&#xff0c;有很大一部分是单片机&#xff08;STM32&#xff09;的开发者&#xff0c;经常看到有人问类似的问题&#xff1a;学了STM32要继续学习Linux吗&#xff1f;每个人的情况不同&#xff0c;到底要不要学习Linux&#xff0c;要结合自身的情况。有的人已经…