小编Ram*_*ams的帖子

在同一个mongodb查询中选择按计数分组和不同计数

我想做点什么

select campaign_id,campaign_name,count(subscriber_id),count(distinct subscriber_id)
group by campaign_id,campaign_name from campaigns;
Run Code Online (Sandbox Code Playgroud)

此查询给出除count之外的结果(distinct subscriber_id)

db.campaigns.aggregate([
    {$match: {subscriber_id: {$ne: null}}},
    {$group: { 
        _id: {campaign_id: "$campaign_id",campaign_name: "$campaign_name"},
        count: {$sum: 1}
    }}
])
Run Code Online (Sandbox Code Playgroud)

以下查询给出除count(subscriber_id)之外的结果

db.campaigns_logs.aggregate([
    {$match : {subscriber_id: {$ne: null}}},
    {$group : { _id: {campaign_id: "$campaign_id",campaign_name: "$campaign_name",subscriber_id: "$subscriber_id"}}},
    {$group : { _id: {campaign_id: "$campaign_id",campaign_name: "$campaign_name"}, 
                count: {$sum: 1}
              }}
])
Run Code Online (Sandbox Code Playgroud)

但我希望count(subscriber_id),count(distinct subscriber_id)在同一个结果中

mongodb mongodb-query aggregation-framework

23
推荐指数
2
解决办法
3万
查看次数

如何在Kubernetes中增加PODS

我对 Kubernetes 很陌生,我已经在 Kubernetes 上部署了一个集群。创建了一个部署并将 POD 的计数设置为 2。我没有为此部署创建 HPA。

为此,我正在使用 Google Cloud。我为集群启用了自动缩放。最小值为 2,最大值为 30。

我在部署中遇到了OOMKilled错误。

所以问题是

所以只有 HPA 可以增加/减少 PODS 数量,对吗??。在这种情况下,基于内存和 CPU 的 HPA 是每个部署都必须和应该的。

如果我错了,请纠正我。

google-cloud-platform kubernetes google-kubernetes-engine

10
推荐指数
1
解决办法
9374
查看次数

即使使用覆盖索引,也可以优化COUNT(DISTINCT)的缓慢

我们在MySql中有一个表有大约3000万条记录,以下是表结构

CREATE TABLE `campaign_logs` (
  `domain` varchar(50) DEFAULT NULL,
  `campaign_id` varchar(50) DEFAULT NULL,
  `subscriber_id` varchar(50) DEFAULT NULL,
  `message` varchar(21000) DEFAULT NULL,
  `log_time` datetime DEFAULT NULL,
  `log_type` varchar(50) DEFAULT NULL,
  `level` varchar(50) DEFAULT NULL,
  `campaign_name` varchar(500) DEFAULT NULL,
  KEY `subscriber_id_index` (`subscriber_id`),
  KEY `log_type_index` (`log_type`),
  KEY `log_time_index` (`log_time`),
  KEY `campid_domain_logtype_logtime_subid_index` (`campaign_id`,`domain`,`log_type`,`log_time`,`subscriber_id`),
  KEY `domain_logtype_logtime_index` (`domain`,`log_type`,`log_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Run Code Online (Sandbox Code Playgroud)

以下是我的查询

我正在做UNION ALL而不是使用IN操作

SELECT log_type,
       DATE_FORMAT(CONVERT_TZ(log_time,'+00:00','+05:30'),'%l %p') AS log_date,
       count(DISTINCT subscriber_id) AS COUNT,
       COUNT(subscriber_id) AS total
FROM stats.campaign_logs USE INDEX(campid_domain_logtype_logtime_subid_index)
WHERE DOMAIN='xxx'
  AND …
Run Code Online (Sandbox Code Playgroud)

mysql sql aggregate-functions query-performance mysql-variables

8
推荐指数
1
解决办法
3780
查看次数

如何回收MySql磁盘空间

我在 MySql 服务器中有一个表,该表包含大约 1M 行。只是因为一个列表每天都在占用更多的磁盘空间。此列的数据类型为 Mediumblob。表大小约为 90 GB。

在每一行插入之后,我做一些处理然后在我真的不需要这个列之后。

那么对于这一列,如果我在处理该行后将该值设置为 NULL,MySql 是否利用这个空白空间进行下一行插入?

MySql 服务器详细信息

服务器版本:5.7

引擎:InnoDB

托管:谷歌云Sql

编辑 1:我从表中删除了 90% 的行,然后我运行了 OPTIMIZE TABLE table_name 但它只减少了 4GB 的磁盘空间并且它没有回收可用磁盘空间。

编辑 2 我什至删除了我的数据库并创建了新的数据库和表,但 MySql 服务器仍然显示 80GB 磁盘空间。MySQL服务器所有数据库的大小

SELECT table_schema "database name",
         sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
         sum( data_free )/ 1024 / 1024 "free space in MB"
     FROM information_schema.TABLES
     GROUP BY table_schema; 

+--------------------+---------------------+------------------+
| database name      | database size in MB | free space in …
Run Code Online (Sandbox Code Playgroud)

mysql database

6
推荐指数
1
解决办法
1万
查看次数

一次传输固定数量结果的 MySql ResultSet

我有包含 1600 万条记录的 MySql 表,由于一些迁移工作,我正在读取整个 Mysql 表。

以下代码用于在 MySql 中流式传输大型 ResultSet

        statement = connection.createStatement(
                java.sql.ResultSet.TYPE_FORWARD_ONLY,
                java.sql.ResultSet.CONCUR_READ_ONLY);
        statement.setFetchSize(Integer.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)

但这是一次流式传输一个结果,这是否意味着我们正在为每一行访问 MySql 服务器

在使用流式传输时,我们可以设置类似这样的语句:setFetchSize(1000);

我想在流式传输大型结果集时减少到服务器的往返次数

java mysql sql

5
推荐指数
1
解决办法
5862
查看次数

优化具有时区转换并按小时分组的Mysql查询

这是我的MySql 5.5中的表,具有3000万条记录

CREATE TABLE `campaign_logs` (
  `domain` varchar(50) DEFAULT NULL,
  `campaign_id` varchar(50) DEFAULT NULL,
  `subscriber_id` varchar(50) DEFAULT NULL,
  `message` varchar(21000) DEFAULT NULL,
  `log_time` datetime DEFAULT NULL,
  `log_type` varchar(50) DEFAULT NULL,
  `level` varchar(50) DEFAULT NULL,
  `campaign_name` varchar(500) DEFAULT NULL,
  KEY `subscriber_id_index` (`subscriber_id`),
  KEY `log_type_index` (`log_type`),
  KEY `log_time_index` (`log_time`),
  KEY `campid_domain_logtype_logtime_subid_index` (`campaign_id`,`domain`,`log_type`,`log_time`,`subscriber_id`),
  KEY `domain_logtype_logtime_index` (`domain`,`log_type`,`log_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
Run Code Online (Sandbox Code Playgroud)

在以下查询中,我正在按时区分组

查询

SELECT 
    log_type
    ,DATE_FORMAT(CONVERT_TZ(log_time,'+00:00','+05:30'),'%l %p') AS log_date
    ,count(*) AS total
    ,count(DISTINCT subscriber_id) d 
FROM
    stats.campaign_logs USE INDEX(campid_domain_logtype_logtime_subid_index)
WHERE
    DOMAIN='xxx' 
    AND campaign_id='123' …
Run Code Online (Sandbox Code Playgroud)

mysql sql

5
推荐指数
1
解决办法
359
查看次数

大表复合索引,优化聚合查询

我们在 MySql 5.5 中有一个大表(大约有 1.6 亿条记录)。

我们安装 mysql 的机器有 4GB RAM

表模式

+---------------+---------------+------+-----+---------+-------+
| Field         | Type          | Null | Key | Default | Extra |
+---------------+---------------+------+-----+---------+-------+
| domain        | varchar(50)   | YES  | MUL | NULL    |       |
| uid           | varchar(100)  | YES  |     | NULL    |       |
| sid           | varchar(100)  | YES  | MUL | NULL    |       |
| vurl          | varchar(2500) | YES  |     | NULL    |       |
| ip            | varchar(20)   | YES  | …
Run Code Online (Sandbox Code Playgroud)

mysql sql database indexing

5
推荐指数
1
解决办法
590
查看次数

Google App引擎应用程序的IP地址

我在Google App引擎中部署了一个应用程序.

我能够获得部署此应用程序的计算机的IP地址,但我的问题是此应用程序是否始终在相同的IP上运行,或者在不同的IP上运行的任何机会.

由于Google应用引擎是一种云解决方案,因此它可以在多个位置一次运行多个实例.

谢谢

google-app-engine google-cloud-endpoints google-cloud-platform

5
推荐指数
2
解决办法
8953
查看次数

MySql - 处理表大小和性能

我们有一个分析产品。我们为每位客户提供一个 JavaScript 代码,他们将其放入他们的网站中。如果用户访问我们的客户站点,Java 脚本代码就会访问我们的服务器,以便我们代表该客户存储此页面访问。每个客户都包含唯一的域名。

我们将此页面访问存储在 MySql 表中。

以下是表架构。

CREATE TABLE `page_visits` (
  `domain` varchar(50) DEFAULT NULL,
  `guid` varchar(100) DEFAULT NULL,
  `sid` varchar(100) DEFAULT NULL,
  `url` varchar(2500) DEFAULT NULL,
  `ip` varchar(20) DEFAULT NULL,
  `is_new` varchar(20) DEFAULT NULL,
  `ref` varchar(2500) DEFAULT NULL,
  `user_agent` varchar(255) DEFAULT NULL,
  `stats_time` datetime DEFAULT NULL,
  `country` varchar(50) DEFAULT NULL,
  `region` varchar(50) DEFAULT NULL,
  `city` varchar(50) DEFAULT NULL,
  `city_lat_long` varchar(50) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  KEY `sid_index` (`sid`) USING BTREE,
  KEY `domain_index` (`domain`),
  KEY `email_index` (`email`),
  KEY …
Run Code Online (Sandbox Code Playgroud)

mysql database query-performance

5
推荐指数
1
解决办法
1592
查看次数

设计应用引擎数据存储和文本搜索建模的最佳方式

我们在谷歌应用引擎上运行了一个Java应用程序.有一种叫做联系.以下是示例模式

Contact
{
  long id
  String firstName
  String lastName
  ...
}
Run Code Online (Sandbox Code Playgroud)

以上是existig模型,用于支持我们在数据存储和文本搜索中存储此对象的一些要求

现在我们想要将联系人与他们的页面查看数据集成.

每个联系人可以拥有数千个页面浏览记录,甚至可以拥有数百万个联系人

以下是示例页面访问对象[注意:我们目前没有此对象,这只是提供有关页面访问的信息]

PageVisit
{

  long id
  String url
  String refUrl
  int  country
  String city
  ....
}
Run Code Online (Sandbox Code Playgroud)

我们有一个要求,需要查询联系核心属性和他的页面访问数据

对于前:

select * from Contact where firstName = 'abc' and url = 'cccccc.com';
select * from Contact where firstName = 'abc' or url = 'cccccc.com';
Run Code Online (Sandbox Code Playgroud)

要编写此类查询,我们需要联系核心属性和访问的页面需要在Contact对象本身中可用,但联系人可以拥有大量的页面视图.因此,这将跨越实体最大大小限制

那么如何在数据存储和文本搜索中设计这种情况下的联系模型.

谢谢

google-app-engine gql google-cloud-datastore google-cloud-platform

5
推荐指数
1
解决办法
127
查看次数