当前位置: 首页 > news >正文

网站建站网站开发广州白云区房价

网站建站网站开发,广州白云区房价,做亚马逊网站的公司建议,西安大雁塔附近酒店推荐1. 通信协议 我们的程序或者工具要操作数据库#xff0c;第一步要做什么事情#xff1f; 跟数据库建立连接。 首先#xff0c;MySQL必须要运行一个服务#xff0c;监听默认的3306端口。在我们开发系统跟第三方对接的时候#xff0c;必须要弄清楚的有两件事。 第一个就是通… 1. 通信协议 我们的程序或者工具要操作数据库第一步要做什么事情 跟数据库建立连接。 首先MySQL必须要运行一个服务监听默认的3306端口。在我们开发系统跟第三方对接的时候必须要弄清楚的有两件事。 第一个就是通信协议比如我们是用HTTP还是WebService还是TCP 第二个是消息格式比如我们用XML格式还是JSON格式还是定长格式报文头长度多少包含什么内容每个字段的详细含义。 MySQL是支持多种通信协议的可以使用同步/异步的方式支持长连接/短连接。我们分别来看: 同步通信 同步通信依: 赖于被调用方受限于被调用方的性能。也就是说应用操作数据库线程会阻塞等待数据库的返回。一般只能做到一对一很难做到一对多的通信。 异步通信 异步可以避免应用阻塞等待但是不能节省SQL执行的时间。 如果异步存在并发每一个SQL的执行都要单独建立一个连接避免数据混乱。但是这样会给服务端带来巨大的压力一个连接就会创建一个线程线程间切换会占用大量CPU资源。另外异步通信还带来了编码的复杂度所以一般不建议使用。如果要异步必须使用连接池排队从连接池获取连接而不是创建新连接。 长连接与短连接 MySQL既支持短连接也支持长连接。短连接就是操作完毕以后马上close掉。长连接可以保持打开减少服务端创建和释放连接的消耗后面的程序访问的时候还可以使用这个连接。一般我们会在连接池中使用长连接。 保持长连接会消耗内存。长时间不活动的连接MySQL服务器会断开。 showglobalvariableslikewait_timeout;--非交互式超时时间如JDBC程序showglobalvariableslikeinteractive_timeout;--交互式超时时间如数据库工具 默认都是28800秒8小时。 可以用showstatus命令showglobalstatuslikeThread%; Threads_cached缓存中的线程连接数。Threads_connected当前打开的连接数。Threads_created为处理连接创建的线程数。Threads_running非睡眠状态的连接数通常指并发连接数。 MySQL支持哪些通信协议呢 UnixSocket 比如我们在Linux服务器上如果没有指定-h参数它就用socket方式登录省略了-S/var/lib/mysql/mysql.sock。 它不用通过网络协议也可以连接到MySQL的服务器它需要用到服务器上的一个物理文件/var/lib/mysql/mysql.sock。 select socket; TCP/IP 协议 我们的编程语言的连接模块都是用 TCP 协议连接到 MySQL 服务器的比如 mysql-connector-java-x.x.xx.jar 2. 语法解析和预处理 为什么一条 SQL 语句能够被识别呢假如我随便执行一个字符串 penyuyan服务器报了一个 1064 的错, 它是怎么知道我输入的内容是错误的 [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for theright syntax to use near penyuyan at line 1 这个就是 MySQL 的 Parser 解析器和 Preprocessor 预处理模块。 这一步主要做的事情是对语句基于 SQL 语法进行词法和语法分析和语义的解析。 词法解析 词法分析就是把一个完整的 SQL 语句打碎成一个个的单词。 比如一个简单的 SQL 语句 select name from user where id  1; 它会打碎成 8 个符号每个符号是什么类型从哪里开始到哪里结束。 语法解析 语法分析会对 SQL 做一些语法检查比如单引号有没有闭合然后根据 MySQL 定义的语法规则根据 SQL 语句生成一个数据结构。这个数据结构我 们把它叫做解析树select_lex。 任何数据库的中间件比如MycatSharding-JDBC用到了DruidParser都必须要有词法和语法分析功能在市面上也有很多的开源的词法解析的工具比如LEX,Yacc. 预处理器 如果我写了一个词法和语法都正确的SQL但是表名或者字段不存在会在哪里报错是在数据库的执行层还是解析器比如 select * from xxx; 解析器可以分析语法但是它怎么知道数据库里面有什么表表里面有什么字段呢实际上还是在解析的时候报错解析SQL的环节里面有个预处理器。 它会检查生成的解析树解决解析器无法解析的语义。比如它会检查表和列名是否存在检查名字和别名保证没有歧义。预处理之后得到一个新的解析树。 3.查询优化QueryOptimizer与查询执行计划 得到解析树之后是不是执行SQL语句了呢这里我们有一个问题一条SQL语句是不是只有一种执行方式或者说数据库最终执行的SQL是不是就是我们发送的SQL 这个答案是否定的。一条SQL语句是可以有很多种执行方式的最终返回相同的结果他们是等价的。但是如果有这么多种执行方式这些执行方式怎么得到的最终选择哪一种去执行根据什么判断标准去选择 这个就是MySQL的查询优化器的模块Optimizer。 查询优化器的目的就是根据解析树生成不同的执行计划ExecutionPlan然后选择一种最优的执行计划MySQL里面使用的是基于开销cost的优化器那种执行计划开销最小就用哪种。 可以使用这个命令查看查询的开销 showstatus like Last_query_cost; 优化器可以做什么 举两个简单的例子: 1、当我们对多张表进行关联查询的时候以哪个表的数据作为基准表。 2、有多个索引可以使用的时候选择哪个索引。 实际上对于每一种数据库来说优化器的模块都是必不可少的他们通过复杂的算法实现尽可能优化查询效率的目标。 如果对于优化器的细节感兴趣可以看看《数据库查询优化器的艺术-原理解析与SQL 性能优化》。 但是优化器也不是万能的并不是再垃圾的SQL语句都能自动优化也不是每次都能选择到最优的执行计划大家在编写SQL语句的时候还是要注意。 优化器是怎么得到执行计划的? 首先我们要启用优化器的追踪默认是关闭的 SHOWVARIABLES LIKE optimizer_trace;set optimizer_trace enabledon; 注意开启这开关是会消耗性能的因为它要把优化分析的结果写到表里面所以不要轻易开启或者查看完之后关闭它改成off 接着我们执行一个SQL语句优化器会生成执行计划 select t.tcid from teacher t, teacher_contact tc wheret.tcidtc.tcid; 这个时候优化器分析的过程已经记录到系统表里面了我们可以查询 select * from information_schema.optimizer_trace\G 它是一个JSON类型的数据主要分成三部分准备阶段、优化阶段和执行阶段。 expanded_query是优化后的SQL语句。considered_execution_plans里面列出了所有的执行计划。 优化器得到的结果 优化器最终会把解析树变成一个查询执行计划查询执行计划是一个数据结构。当然这个执行计划是不是一定是最优的执行计划呢不一定因为MySQL也有可能覆盖不到所有的执行计划。 我们怎么查看MySQL的执行计划呢比如多张表关联查询先查询哪张表在执行查询的时候可能用到哪些索引实际上用到了什么索引 MySQL提供了一个执行计划的工具。我们在SQL语句前面加上EXPLAIN就可以看到执行计划的信息。 EXPLAIN select name from user where id1; *注意Explain的结果也不一定最终执行的方式。 4.存储引擎 得到执行计划以后SQL语句是不是终于可以执行了 问题又来了 1、从逻辑的角度来说我们的数据是放在哪里的或者说放在一个什么结构里面2、执行计划在哪里执行是谁去执行 存储引擎基本介绍 我们先回答第一个问题在关系型数据库里面数据是放在什么结构里面的 放在表Table里面的 我们可以把这个表理解成Excel电子表格的形式。所以我们的表在存储数据的同时还要组织数据的存储结构这个存储结构就是由我们的存储引擎决定的所以我们也可以把存储引擎叫做表类型。 查看存储引擎 比如我们数据库里面已经存在的表我们怎么查看它们的存储引擎呢 show table status from xxx; 在MySQL里面我们创建的每一张表都可以指定它的存储引擎而不是一个数据库只能使用一个存储引擎。存储引擎的使用是以表为单位的。而且创建表之后还可以修改存储引擎。 我们说一张表使用的存储引擎决定我们存储数据的结构那在服务器上它们是怎么存储的呢我们先要找到数据库存放数据的路径 showvariableslikedatadir; 默认情况下每个数据库有一个自己文件夹任何一个存储引擎都有一个frm文件这个是表结构定义文件。 不同的存储引擎存放数据的方式不一样产生的文件也不一样innodb是1个memory没有myisam是两个。 这些存储引擎的差别在哪呢 存储引擎比较 MyISAM和InnoDB是我们用得最多的两个存储引擎在MySQL5.5版本之前默认的存储引擎是MyISAM它是MySQL自带的。我们创建表的时候不指定存储引擎它就会使用MyISAM作为存储引擎. MyISAM的前身是ISAMIndexedSequentialAccessMethod利用索引顺序存取数据的方法. 5.5版本之后默认的存储引擎改成了InnoDB它是第三方公司为MySQL开发的。为什么要改呢最主要的原因还是InnoDB支持事务支持行级别的锁对于业务一致性要求高的场景来说更适合。 MyISAM 应用范围比较小。表级锁定限制了读/写的性能因此在Web和数据仓库配置中它通常用于只读或以读为主的工作。 特点 支持表级别的锁插入和更新会锁表。不支持事务。 拥有较高的插入insert和查询select速度。 存储了表的行数count速度更快。 InnoDB mysql5.7中的默认存储引擎。InnoDB是一个事务安全与ACID兼容的MySQL 存储引擎它具有提交、回滚和崩溃恢复功能来保护用户数据。InnoDB行级锁不升级为更粗粒度的锁和Oracle风格的一致非锁读提高了多用户并发性和性能。InnoDB将用户数据存储在聚集索引中以减少基于主键的常见查询的I/O。为了保持数据完整性, InnoDB还支持外键引用完整性约束。 特点: 支持事务支持外键因此数据的完整性、一致性更高。 支持行级别的锁和表级别的锁。 支持读写并发写不阻塞读MVCC。 特殊的索引存放方式可以减少IO提升查询效率。 适合经常更新的表存在并发读写或者有事务处理的业务系统. Memory 将所有数据存储在RAM中以便在需要快速查找非关键数据的环境中快速访问。这个引擎以前被称为堆引擎。其使用案例正在减少InnoDB及其缓冲池内存区域提供了一种通用、持久的方法来将大部分或所有数据保存在内存中而ndbcluster为大型分布式数据集提供了快速的键值查找。 特点: 把数据放在内存里面读写的速度很快但是数据库重启或者崩溃数据会全部消失。只适合做临时表。 CSV 它的表实际上是带有逗号分隔值的文本文件。csv表允许以csv格式导入或转储数据以便与读写相同格式的脚本和应用程序交换数据。因为csv表没有索引所以通常在正常操作期间将数据保存在innodb表中并且只在导入或导出阶段使用csv表。 特点: 特点不允许空行不支持索引。格式通用可以直接编辑适合在不同数据库之间导入导出。 Archive 这些紧凑的未索引的表用于存储和检索大量很少引用的历史、存档或安全审计信息。 特点 不支持索引不支持updatedelete。 如何选择存储引擎 如果对数据一致性要求比较高需要事务支持可以选择InnoDB。 如果数据查询多更新少对查询性能要求比较高可以选择MyISAM。 如果需要一个用于查询的临时表可以选择Memory。 5. 执行引擎 存储引擎分析完了它是我们存储数据的形式继续第二个问题是谁使用执行计划去操作存储引擎呢 这就是我们的执行引擎它利用存储引擎提供的相应的API来完成操作。 为什么我们修改了表的存储引擎操作方式不需要做任何改变因为不同功能的存储引擎实现的API是相同的。 最后把数据返回给客户端即使没有结果也要返回。 本文由 mdnice 多平台发布
http://www.hkea.cn/news/14475966/

相关文章:

  • 加强网站建设工作医院门户网站模板下载
  • 广西建设银行行号查询网站网络营销推广方式步骤
  • 在百度上做公司做网站杂志社网站建设方案
  • 网站建设开发计划模板南京市雨花区建设局网站
  • 做外贸业务去哪些网站php 除了做网站
  • 网站建设xm37关于做网站的策划方案
  • 怎么做网站步骤免费的wordpress 插件 浮动小人
  • 如何用python做一个网站wordpress搜插件错误
  • 建设部网站统计深圳网站设计公司如何
  • 做旅游的网站在哪里做深圳网页设计培训要多久
  • 境外企业网站推广北京商场需要几天核酸
  • 网站后台添加投票系统不良网站正能量进入窗口
  • 网站建设分金手指排名十商城网站模板库
  • 阿里云网站 模板建设wordpress 文章的形式
  • 网站论坛建设方案网站建制作
  • 介绍好的免费网站模板下载短视频网站开发
  • 微网站 建设广西建设教育协会网站
  • 网站建设土豆视频教程徐州网站制作案例
  • app下载安装官方网站成都市区必去的景点
  • 50岁到55岁急招工关键词优化上海
  • 成都网站设计开发做得好贫困户房屋建设补助在哪个网站公布
  • 同一产品做多个网站怎么做一个简易网站
  • 做墙报的网站校园网络文明建设方案
  • 网站后台密码忘记了怎么办青海建设局网站
  • 网站建设流程时间表做网站通常到哪找图片
  • 网站留言表格怎么做网站推广关键词
  • 手机网站制作方法大连网站网络公司
  • 网站推广要点 优帮云手机建筑设计app
  • 织梦大气蓝色门户资讯网站模板qq空间网址是什么
  • 天津大型网站建设建设企业网站需要多少钱