php解决大数据库,php做大数据

PHP 数据库设计,用户表数据量大该怎么优化

有很多种方法可以优化:

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比志丹网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式志丹网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖志丹地区。费用合理售后完善,十多年实体公司更值得信赖。

数据库设置主从,进行读写分离;

数据分表,如按月份分表,需要统计数据就查总表;

优化查询语句,适当增加索引;

字段优化,对不常用或者没有必要的字段可以考虑放在另外一张表里,避免单表数据过大,字段过多。

php 怎么解决 大数据量 插入数据库

ini_set('max_execution_time','0');

$pdo

=

new

PDO("mysql:host=localhost;dbname=test","root","123456");

$sql

=

"insert

into

test(name,age,state,created_time)

values";

for($i=0;

$i100000;

$i++){

$sql

.="('zhangsan',21,1,'2015-09-17')";

}

$sql

=

substr($sql,0,strlen($sql)-1);

var_dump($sql);

if($pdo

-

exec($sql)){

echo

"插入成功!";

echo

$pdo

-

lastinsertid();

}

试试吧。10万条1分钟多,我觉得还行

php+mysql在数据库里数据大的话查询很慢

1.建立索引,尽可能把索引建立到你你经常比较的字段上,如select a,b,c,d from a where 索引字段=值,这个索引字段最好是数值型数据

2.慢有更多情况,

情况1:远程查询,其实可能查询不慢,由于数据量大,传输过程慢

情况2:WHERE 后面的比较数据太多,比如 like 类的语句

情况3:需要哪个字段只取那个字段就行了,比如select * from a与select b,c,d from a速度是有差距的

3.数据库定期维护,压缩,把不常用的数据备份后放入备份库里,查询时查备份库等

问题补充:

.第一条:建立索引,怎么建立,我也听说过,但不知道怎么使用

答:每种数据建立索引的方法有差异,比如SQL SERVER 2000中可对多个字段进行索引,比如SQL SERVER2000中有命令

CREATE INDEX

为给定表或视图创建索引。

只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。

语法

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )

[ WITH index_option [ ,...n] ]

[ ON filegroup ]

index_option ::=

{ PAD_INDEX |

FILLFACTOR = fillfactor |

IGNORE_DUP_KEY |

DROP_EXISTING |

STATISTICS_NORECOMPUTE |

SORT_IN_TEMPDB

}

第三条:数据库定期维护,压缩:怎么个压缩法?及时备份数据到备份库查询备份库,那查询时不是还慢吗?

答:这个有压缩工具,基本上每种数据库都有自己的压缩数据库的工具

php数据库特别大的时候怎么查找快一点?

查找的话没办法了,毕竟你只能枚举,如果要改善的话只能从新构建数据库,添加索引字段。

或是多个数据库存放数据,根据上一个数据库提供的索引查找下一数据库的数据,这样可以减少枚举次数。

php+mysql可以处理亿级的数据吗

理论上是可以的,但效率上就有问题了,这么大量的数据一般不会放一张表里面,都会考虑分表,然后考虑索引、数据库主从、服务器配置等,提高查询效率php+mysql可以处理亿级的数据吗

在PHP中怎么解决大量数据处理的问题

mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会缓存结果集,而是查询出来数据后立马对结果集进行操作,也就是便查询边返回,这样就不会出现超出内存的现象,但是使用mysql_unbuffered_query的是时候不能使用 mysql_num_rows() 和 mysql_data_seek()。并且向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。例如:

使用缓存结果集的代码:

function selecttest()

{

try {

$pdo = new PDO("mysql:host=localhost;dbname=test", 'root', '123456');

// 不使用缓存结果集方式

// $pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$sth = $pdo-prepare('select * from test');

$sth-execute();

echo '最初占用内存大小:' . memory_get_usage() . "\n";

$i = 0;

while ($result = $sth-fetch(PDO::FETCH_ASSOC)) {

$i += 1;

if ($i 10) {

break;

}

sleep(1);

print_r($result);

echo '占用内存大小:' . memory_get_usage() . "\n";

}

} catch (Exception $e) {

echo $e-getMessage();

}

}

执行时将会报超出内存的错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 204800000 bytes) in E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php on line 56

Call Stack:

0.0005 135392 1. {main}() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:0

0.0005 135568 2. test-selecttest() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:85

0.0050 142528 3. PDOStatement-execute() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:56

将上面代码中的$pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);一行的注释去掉后将不在缓存结果集,这时运行该函数的结果如下:

最初占用内存大小:144808

Array

(

[id] = 1

[a] = v

[b] = w

[c] = i

)

占用内存大小:145544

Array

(

[id] = 2

[a] = b

[b] = l

[c] = q

)

占用内存大小:145544

Array

(

[id] = 3

[a] = m

[b] = p

[c] = h

)

占用内存大小:145536

Array

(

[id] = 4

[a] = j

[b] = i

[c] = b

)

占用内存大小:145536

可以看到,这时返回一条数据内存占用非常的小,也就700多字节,这样就不会出现超出内存的错误了。

网页题目:php解决大数据库,php做大数据
浏览路径:https://www.cdcxhl.com/article48/dsihiep.html

成都网站建设公司_创新互联,为您提供云服务器网站策划企业建站软件开发品牌网站设计全网营销推广

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设