void updateStorageUsage(String clusterName, short accountId, short containerId, long storageUsage)
      throws SQLException {
    // TODO: adding real physical storage usage and number of blobs here
    final long physicalStorageUsage = storageUsage;
    final long numberOfBlobs = 1L;
    try (Connection connection = dataSource.getConnection()) {
      try (PreparedStatement insertStatement = connection.prepareStatement(insertSql)) {
        long startTimeMs = System.currentTimeMillis();
        insertStatement.setString(1, clusterName);
        // The data type of partition id, account id and container id are not SMALLINT, but INT in MySQL, for
        // future extension
        insertStatement.setInt(2, accountId);
        insertStatement.setInt(3, containerId);
        insertStatement.setLong(4, storageUsage);
        insertStatement.setLong(5, physicalStorageUsage);
        insertStatement.setLong(6, numberOfBlobs);
        insertStatement.setLong(7, storageUsage);
        insertStatement.setLong(8, physicalStorageUsage);
        insertStatement.setLong(9, numberOfBlobs);
        insertStatement.executeUpdate();
        metrics.writeTimeMs.update(System.currentTimeMillis() - startTimeMs);
        metrics.writeSuccessCount.inc();
      }
    } catch (SQLException e) {
      metrics.writeFailureCount.inc();
      logger.error(
          String.format("Failed to execute updated on %s, with parameter %d %d %d", AGGREGATED_ACCOUNT_REPORTS_TABLE,
              accountId, containerId, storageUsage), e);
      throw e;
    }
  }
Update the storage usage for the given account/container.
@param clusterName The clusterName
@param accountId The account id.
@param containerId The container id.
@param storageUsage The storage usage in bytes.
@throws SQLException
ambry-mysql/src/main/java/com/github/ambry/accountstats/AggregatedAccountReportsDao.java