为什么aws Dynamodb查询需要花费太多时间来使用php进行数据处理

时间:2018-04-27 10:56:25

标签: php amazon-web-services amazon-ec2 amazon-dynamodb

我在aws dynomodb中有20张桌子。一切都很好。但是现在它没有工作,并且花费了太多时间来获取数据。我无法弄清问题在哪里。

如果我的代码中存在问题:在它工作正常之前我没有更改代码中的任何内容。

如果在dynamodb中出现问题:移动端dynamodb查询工作正常。这对我有用。移动和网站使用相同的数据库。

如果我服务器上出现问题那么:面对这个问题后我创建了新的instance.i已经使用了ubuntu,现在一切正常,期待dynamodb。

这里我放置了一个演示代码,说明我是如何从dynamodb表中获取数据的。

require 'vendor/autoload.php';
use Aws\Common\Aws;
use Aws\DynamoDb\DynamoDbClient;

$aws = Aws::factory ( '/var/www/html/jackpot/id.php' );
$client = $aws->get ( 'DynamoDb' );
$iterator = $client->getIterator ( 'Scan', array (
        'TableName' => 'iqjackpot-mobilehub-352703280-counter'
) );

foreach($iterator as $item){

    $totalTicket = (int) $item['totalTickets']['N'];
    $counterIds = (int) $item['counterId']['N']+1;

}

echo $totalTicket;
die;

我不知道我做错了什么,现在做什么。我花了2天时间。如果有人帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:3)

您正在使用AWS DynamoDB扫描功能。 DynamoDB扫描非常慢。

来自:AWS DynamoDB

  

通常,扫描操作的效率低于DynamoDB中的其他操作。扫描操作始终扫描整个表或二级索引。然后它过滤掉值以提供您想要的结果,实质上是添加了从结果集中删除数据的额外步骤。

建议使用DynamoDB查询。如果您的索引设置正确,它应该会快得多!