小编Rad*_*ris的帖子

大会计表,按两个日期分区的最佳方式

我需要创建一个日志表来存储与外部网络的连接(过去 3 年,之后日志将进入备份)。使用的硬件/软件是专有的,为了记账,它只需使用一些参数调用我们的自定义脚本,如下所示:

  • 当用户连接时 ( our_script START user mac ip);
  • 当用户断开连接 ( our_script STOP user mac ip in_bytes out_bytes more)

有时我们不会收到断开连接消息。所以我们需要适应这种情况。

到目前为止,我为会计表提出了这个结构:

CREATE TABLE `accounting` (
  `user` varchar(50) NOT NULL DEFAULT '',
  `mac` varchar(20) NOT NULL DEFAULT '',
  `ip` varchar(15) NOT NULL DEFAULT '',
  `ipv6` varchar(39) DEFAULT NULL,
  `start_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `stop_datetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `in_bytes` bigint(32) unsigned DEFAULT '0',
  `out_bytes` bigint(32) unsigned DEFAULT '0',
  `more_columns` varchar(255) default NULL, 
  PRIMARY KEY (`user`,`mac`,`ip`,`start_datetime`,`stop_datetime`), …
Run Code Online (Sandbox Code Playgroud)

mysql performance partitioning

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

使用 pt-query-digest 从大型日志文件中提取查询指纹和表

我尝试使用 pt-query-digest 解析一个大型日志文件,但它给出了“内存不足!” 当我尝试读取文件时。我有 3GB 内存,40GB 硬盘空间,文件是 20GB。我没有在有关内存的文档中找到任何内容。

我减少命令:

pt-query-digest --group-by fingerprint --print --no-report /path/to/largeLogFile.log
pt-query-digest --table-access /path/to/largeLogFile.log
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 如何从 general_log 生成的大型日志文件中提取查询指纹?

  2. 如何提取所有使用过的表?

编辑:
尝试@DTest --sample 选项(带有 2 和 1),但结果相同。就在它在 htop 中达到 50% 内存之前,它每次都会死亡(请参阅 screnshoot):在此处输入图片说明

我在它死之前做了一个 strace 我得到:

read(3, "phone from teams as t ri"..., 4096) = 4096
mremap(0x5b27a000, 1543499776, 1543503872, MREMAP_MAYMOVE) = -1 ENOMEM (Cannot allocate memory)
mmap2(NULL, 1543503872, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory)
brk(0x64c2d000)                         = 0x8c2e000
mmap2(NULL, 1543634944, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = …
Run Code Online (Sandbox Code Playgroud)

mysql logs

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

标签 统计

mysql ×2

logs ×1

partitioning ×1

performance ×1