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

网站托管哪家好做网站都是用ps吗

网站托管哪家好,做网站都是用ps吗,管理网站建设源代码程序,wordpress没有图片如果需要从 MySQL 服务端获得很高的性能#xff0c;最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些#xff0c;大部分的查询优化是有据可循的#xff0c;从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程#xff1a; 客户端… 如果需要从 MySQL 服务端获得很高的性能最佳的方式就是花时间研究 MySQL 优化和执行查询的机制。一旦理解了这些大部分的查询优化是有据可循的从而使得整个查询优化的过程更有逻辑性。下图展示了 MySQL 执行查询的过程 客户端将 SQL 语句发送到服务端。服务端检查查询缓存。如果缓存中已有数据则直接返回缓存结果否则将 SQL 语句传递给下一环节。服务端解析、预处理和优化 SQL 语句后传递到查询优化器中形成查询计划。查询执行引擎通过调用存储引擎接口执行查询计划。服务端将查询结果返回给客户端。 上述的几个步骤都有其复杂性接下来几篇文章将详细讲述各个环节。查询优化过程尤其复杂并且理解这一环节很重要。 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:;hostlocalhost, 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_result1;hostlocalhost, user, password);最后编辑于2025-01-18 16:58:25 © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦
http://www.hkea.cn/news/14562416/

相关文章:

  • 营销型网站的运营配套不包括可以自己制作头像的网站
  • 网站解析后显示在建设中iis网站模板
  • 国内新闻最新消息淄博网站制作服务优化
  • 购买网站建设平台中小企业建网站哪个好
  • seo综合查询爱站谷歌搜索引擎363
  • 医疗网站跳出率平均是多少亚马逊品牌官网建设
  • 学院网站建设项目的成本计划书萍乡做网站的公司
  • 2022年seo还值得做吗长沙seo外包
  • 在哪买网站链接wordpress开启静态网页
  • 苏州网站制作开发公司在建设部网站
  • dede模板网站如何搭建企业摄影网站模板
  • 创建一个网站要多少钱重庆市建设工程节能中心网站
  • 网站在空间费用徐州建设工程交易网站
  • 菜鸟建站网wordpress如何超过2M
  • tp做网站签到功能网站开发者模式怎么保存
  • 购物网站用html怎么做wordpress timer
  • 手工做皮具国外的网站wordpress 修改文章作者
  • 网站的营销推广方案及预算北京网站改版费用
  • 怎样在百度上免费建网站石家庄营销网站建设多少钱
  • 龙南网站建设为什么sem的工资都不高
  • 建设部网站四库一平台高考志愿网站开发
  • 做asp.net网站参考文献标志设计说明案例
  • 网站建设vr网站开发需要编程吗
  • 网站自适应布局 html5永州市建设网站
  • 龙象建设集团有限公司网站学做网站论坛会员账号
  • 重庆电商网站建设费用宣城网站优化
  • 网站服务器配置单用什么编辑wordpress
  • 视频网站建设公司网站运营设计
  • 阿里云怎么做淘客网站闲鱼怎么推广自己的产品
  • 溧阳网站建设公司婚庆5个坑