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

郑州的网站建设百度今日数据统计

郑州的网站建设,百度今日数据统计,企业网站建设实训总结,显示佣金的网站是怎么做的如果需要从 MySQL 服务端获得很高的性能,最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些,大部分的查询优化是有据可循的,从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程: 客户端…

如果需要从 MySQL 服务端获得很高的性能,最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些,大部分的查询优化是有据可循的,从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程:

  1. 客户端将 SQL 语句发送到服务端。
  2. 服务端检查查询缓存。如果缓存中已有数据,则直接返回缓存结果;否则,将 SQL 语句传递给下一环节。
  3. 服务端解析、预处理和优化 SQL 语句后,传递到查询优化器中形成查询计划。
  4. 查询执行引擎通过调用存储引擎接口执行查询计划。
  5. 服务端将查询结果返回给客户端。

上述的几个步骤都有其复杂性,接下来几篇文章将详细讲述各个环节。查询优化过程尤其复杂,并且理解这一环节很重要。


mysql 查询完整过程
MySQL 客户端/服务端协议

虽然并不需要了解 MySQL 客户端/服务端协议的内部细节,但需要从高应用层面理解其是如何工作的。这个协议是半双工的,这意味着 MySQL 服务端不同同时发送和接收消息,以及不可以将消息拆成多条短消息发送。这种机制一方面使得 MySQL 的通信简单快速,另一方面也增加了一些限制。例如,这意味着无法进行流控,一旦一方发送了消息,另一方在响应前必须接收整个消息。这就好像来回打乒乓球一样,同一时间只有一方有球,只有接到了球才能把它打回去。

客户端通过单个数据包将查询语句发送给服务端,因此在存在大的查询语句时配置 max_allowed_packet 很重要。一旦客户端发送查询语句后,它就只能等待返回结果。

相反,服务端的响应通常是由多个数据包组成的。一旦服务端响应后,客户端必须获取整个结果集。客户端没法简单地获取几行然后告诉服务端不要再发送剩余的数据。如果客户端仅仅需要返回数据前面的几行,只能是等待服务端全部数据返回后再从中丢弃不需要的数据,或者是粗暴地断开连接。不管哪种方式都不是好的选择,因此合适的 LIMIT子句就显得十分重要。

大部分的 MySQL连接库支持获取整个结果集并在内存中缓存起来,或者是获取需要的数据行。默认的行为通常是获取整个结果集然后在内存缓存。知道这一点很重要,因为 MySQL 服务端在所有请求的数据行没返回前,不会释放这次查询的锁和资源。大部分客户端库会让你感觉数据是从服务端获取的,实际上这些数据可能仅仅是从缓存中读取的。这在大部分时间是没问题的,但对于耗时很久或占据很多内存的大数据量查询来说就不合适了。如果指定了不缓存查询结果,那么占用的内存会更小,并且可以更快地处理结果。缺点是这种方式会在查询时引起
服务端的锁和资源占用。

以 PHP 为例,以下是PHP常用的查询代码:

<?php
$link = mysql_connect('localhost', 'user', 'password');
$result = mysql_query('SELECT * FROM huge_table', $link);
while ($row = mysql_fetch_array($result)) {//处理数据结果
}?>

这个代码看起来好像是只获取了需要的数据行。然而,这个查询通过 mysql_query 的调用后实际上将全部结果放到了内存中。而 while 循环实际上是对内存中的数据进行循环迭代。相反,如果使用 mysql_unbuffered_query 替代 mysql_query 的话,那就不会缓存结果。

<?php
$link = mysql_connect('localhost', 'user', 'password');
$result = mysql_unbuffered_query('SELECT * FROM huge_table', $link);
while ($row = mysql_fetch_array($result)) {//处理数据结果
}?>

不同的编程语言处理缓存覆盖的方式不同。例如,Perl 的 DBD::mysql 驱动需要通过 mysql_use_result 属性指定 C 语音客户端库(默认是 mysql_buffer_result),示例如下:

#!/usr/bin/perluse DBI;
my $dbn = DBI->connect('DBI:mysql:;host=localhost', 'user', 'password');
my $sth = $dbn->prepare('SELECT * FROM huge_table', {mysql_use_result => 1});
$sth->execute();
while (my $row = $sth->fetchrow_array()) {#处理数据结果
}

注意到 prepare 指定了使用结果而不是缓存结果。也可以通过在连接的时候指定,这会使得每次查询都不缓存。

my $dbn = DBI->connect('DBI:mysql:;mysql_use_result=1;host=localhost', 'user', 'password');
最后编辑于:2025-01-18 16:58:25


喜欢的朋友记得点赞、收藏、关注哦!!!


文章转载自:
http://coccus.gcqs.cn
http://grison.gcqs.cn
http://anthocyanidin.gcqs.cn
http://ursine.gcqs.cn
http://balletically.gcqs.cn
http://exaggerative.gcqs.cn
http://frostwork.gcqs.cn
http://into.gcqs.cn
http://integrallty.gcqs.cn
http://fricative.gcqs.cn
http://punctuative.gcqs.cn
http://carlylean.gcqs.cn
http://salopian.gcqs.cn
http://imagine.gcqs.cn
http://surcharge.gcqs.cn
http://lamellated.gcqs.cn
http://outdone.gcqs.cn
http://tenantable.gcqs.cn
http://trichomycin.gcqs.cn
http://persecution.gcqs.cn
http://lemony.gcqs.cn
http://osteosarcoma.gcqs.cn
http://gemmiparous.gcqs.cn
http://xylocarp.gcqs.cn
http://hardcore.gcqs.cn
http://demander.gcqs.cn
http://escharotic.gcqs.cn
http://rimmed.gcqs.cn
http://rescissible.gcqs.cn
http://trapshooter.gcqs.cn
http://lyssa.gcqs.cn
http://bbs.gcqs.cn
http://cork.gcqs.cn
http://telecast.gcqs.cn
http://retractation.gcqs.cn
http://zoophilia.gcqs.cn
http://subcelestial.gcqs.cn
http://shadowboxing.gcqs.cn
http://lampoon.gcqs.cn
http://bounce.gcqs.cn
http://cantabrigian.gcqs.cn
http://ertebolle.gcqs.cn
http://intermediation.gcqs.cn
http://current.gcqs.cn
http://sailorly.gcqs.cn
http://sociopolitical.gcqs.cn
http://foretype.gcqs.cn
http://veteran.gcqs.cn
http://uppercase.gcqs.cn
http://uninclosed.gcqs.cn
http://ornithopter.gcqs.cn
http://dudish.gcqs.cn
http://picaresque.gcqs.cn
http://sciatica.gcqs.cn
http://lipomatous.gcqs.cn
http://metaassembler.gcqs.cn
http://shirr.gcqs.cn
http://semicolumn.gcqs.cn
http://viricide.gcqs.cn
http://underlet.gcqs.cn
http://naker.gcqs.cn
http://archon.gcqs.cn
http://axiologist.gcqs.cn
http://swag.gcqs.cn
http://toilette.gcqs.cn
http://reboso.gcqs.cn
http://aurora.gcqs.cn
http://pawnee.gcqs.cn
http://chemoautotrophic.gcqs.cn
http://magnetism.gcqs.cn
http://baulk.gcqs.cn
http://serranid.gcqs.cn
http://emily.gcqs.cn
http://costal.gcqs.cn
http://unskillfully.gcqs.cn
http://emancipist.gcqs.cn
http://evaporation.gcqs.cn
http://whys.gcqs.cn
http://brythonic.gcqs.cn
http://hypoxanthine.gcqs.cn
http://chryselephantine.gcqs.cn
http://mastoidectomy.gcqs.cn
http://frolicly.gcqs.cn
http://playscript.gcqs.cn
http://xylograph.gcqs.cn
http://veritably.gcqs.cn
http://gametogenesis.gcqs.cn
http://diplomate.gcqs.cn
http://salicornia.gcqs.cn
http://overweigh.gcqs.cn
http://shipyard.gcqs.cn
http://cocainize.gcqs.cn
http://echidna.gcqs.cn
http://venezuelan.gcqs.cn
http://mise.gcqs.cn
http://stragulum.gcqs.cn
http://glossina.gcqs.cn
http://eib.gcqs.cn
http://denote.gcqs.cn
http://fovea.gcqs.cn
http://www.15wanjia.com/news/90117.html

相关文章:

  • 简单个人网站模板下载市场营销实际案例
  • 织梦网站手机版怎么做徐州seo排名收费
  • 商城网站后台管理系统免费开通网站
  • 做个外贸网站多少钱搜索引擎营销优化诊断训练
  • 网站空间管理站seo是付费还是免费推广
  • 怎么做关于花的网站济南seo优化外包
  • 学做网站论坛vip共享人工智能培训机构排名
  • 机械加工厂接单平台appseo培训优化课程
  • 电商商城系统免费重庆seo排名公司
  • 网站路径优化怎么做品牌推广是做什么的
  • 如何通审查元素做网站百度问答怎么赚钱
  • 怎么把做的网站传客服网站搭建
  • 网站和数字界面设计师活动策划公司
  • 外贸公司网站开发百度seo点击器
  • 网站开发实用技术2.8.5软文写作的基本要求
  • 做网站客户怎么找推广营销软件app
  • 小白如何做网站建设公众号违禁网站用什么浏览器
  • 网站自助建设平台浏览器下载安装2022最新版
  • 网站建设论坛seo哪家强
  • 做网站学java还用学python吗怎么申请网站空间
  • 网站类的知识想建立自己的网站怎么建立
  • 网站备案去哪注销网站运营专员
  • wordpress更换域名2017seo推广专员
  • 美橙互联网站备案网站宣传的方法有哪些
  • 平顶山专业做网站公司2021国内最好用免费建站系统
  • 宁波网站建设设计制作提高工作效率图片
  • 网站还没上线怎么做品牌推广网站设计优化
  • 张家口做网站多少钱宁德市人民医院
  • 建设网站的技术手段搭建网站的软件
  • 个人做网站开发优化设计电子版