这篇文章主要为大家展示了“MySQL中Buffered and Unbuffered queries及pdo非缓存查询的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中Buffered and Unbuffered queries及pdo非缓存查询的示例分析”这篇文章吧。

MySQL的Buffered and Unbuffered queries

我们就进一步的来talk talk MySQL的查询缓存的高级作用吧,也就是 查询缓存 和 查询非缓存!

起因:(内存溢出警告)

PHPFatalerror:Allowedmemorysizeof268435456bytesexhausted

1.官方

主要说缓存查询是一下子把内容都查出来,放到内存里,会越积越多;而非缓存查询则直接一条一条从MySQL服务器返回,也就是会等待着php进程来获取下一条数据。(主要了解这个意思就行,想要全了解的,微我或者百度翻译)

2.Buffer and unBuffer query

a) 缓存查询一般是用于查询数据一次性获得,会存与内存中;

b) 非缓存查询是直接从MySQL中一条一条的返回,不会存于内存中;

3.mysqli,pdo的非缓存查询例子

<?php##mysqli$mysqli=newmysqli("localhost","my_user","my_password","world");$uresult=$mysqli->query("SELECTNameFROMCity",MYSQLI_USE_RESULT);if($uresult){while($row=$uresult->fetch_assoc()){echo$row['Name'].PHP_EOL;}}$uresult->close();##pdo$pdo=newPDO("mysql:host=localhost;dbname=world",'my_user','my_pass');$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,false);$uresult=$pdo->query("SELECTNameFROMCity");if($uresult){while($row=$uresult->fetch(PDO::FETCH_ASSOC)){echo$row['Name'].PHP_EOL;}}##mysql会被抛弃的,了解下即可$conn=mysql_connect("localhost","my_user","my_pass");$db=mysql_select_db("world");$uresult=mysql_unbuffered_query("SELECTNameFROMCity");if($uresult){while($row=mysql_fetch_assoc($uresult)){echo$row['Name'].PHP_EOL;}}

以上是“MySQL中Buffered and Unbuffered queries及pdo非缓存查询的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!