如何将文本文件中的数据加载到特定字段中。这是一些复制操作的 30 行日志文件;没有什么花哨。我只想将它存储为大文本或 blob。
我能找到的示例都是用于将文本文件加载到表格中的。
这是我的数据库的样子:
+----+---------------------+---------------------+------+------------+------------------------------+
| id | LastStart | LastFinish | Log | ExitStatus | TaskName |
+----+---------------------+---------------------+------+------------+------------------------------+
| 1 | 2012-06-26 10:41:17 | 2012-06-26 10:47:42 | NULL | NULL | LouPrMgt004.Backup |
| 2 | NULL | NULL | NULL | NULL | LouPrMgt004.LoadPrtgDataToDb |
+----+---------------------+---------------------+------+------------+------------------------------+
Run Code Online (Sandbox Code Playgroud)
所以我只想将文本文件“/root/copy.log”插入到“日志”字段中。
日志文件都会有所不同,但这里是其中之一:
2012/06/26 08:35:53 [6952] building file list
2012/06/26 08:35:53 [6952] .d...p..... ./
2012/06/26 08:35:53 [6952] <f..t...... LouPrMgt004-backup-www.tar.gz
2012/06/26 08:35:53 [6952] <f..t...... MySQL_ServerInfo.sql
2012/06/26 08:35:53 [6952] <f..t...... MySQL_nmap_scan.sql
2012/06/26 08:35:53 …Run Code Online (Sandbox Code Playgroud) BTREE在查询速度、磁盘存储和内存使用方面,在 MySQL中使用索引的优缺点是什么?
BTREE按递增顺序提供更简单的迭代?BTREE?BTREEindex有什么缺点吗?我有两个 RDS 实例:一个 R/W 主实例和一个只读副本。
6 月 29 日,副本停止注册复制数据 - 不确定这是否相关。
7 月 3 日,master 的 CPU 使用率开始单调增加,并且急剧增加:

现在几乎是 100% 的临界值。
据我所知,查询量并没有真正改变。当时唯一发生的事情是我的 web 层中的一个 django-celery 守护进程占用了整个 CPU 核心——强制杀死它似乎解决了 web 层上的问题,但似乎 DB 层问题可能与此相关。
同时数据库大小也开始单调增加:

进程列表中没有长查询,也根本没有插入,所以我不确定如何找出哪些表在增长,以及 CPU 的去向。
是否有 MySQL 诊断,同时可以显示表大小趋势?配置全局正在进行的查询?配置全局 CPU 使用率?
我已经重新启动了服务器几次,但无济于事。
服务器上显然还有很多空间,但是当 CPU 使用率达到 100% 时,事情会变得很糟糕,因此非常感谢任何帮助!
问题:我有两张相当大的桌子。用于用户之间消息的“墙”表,2 GB,900 万行,“章”表,200 万行,18 GB。我想保持“墙”表的活动行数较小,同时我想减小章节表的大小。我犯了一个错误,一开始没有压缩文本数据,我想开始压缩档案中的数据。
对于“墙”表,我认为比某个墙 ID 更旧的所有内容都将被传输并压缩到“wall_archive”。任何想要查看较旧帖子的人都会获得一个“查看存档”链接,其中较旧的帖子查询使用存档表。然后我不时运行一个 cron 作业来执行此操作,并且存档的最后一个墙 ID 将存储在某处以供参考。我在这里走正确的方向吗?
我不太确定如何使“章节”表易于管理。也许归档更少,更需要对表(或两者)进行分区。但最好的方法是什么?我正在考虑将“故事”ID 分成赔率和偶数,并将章节分成两个表格,但我会再次遇到同样的问题。或者我可以存档在某个日期之前修改的故事。或者在某个故事ID之前。关于可扩展解决方案的任何建议?
最后,我应该如何压缩文本数据?我应该在第 9 级使用 PHP 的 gzcompress 函数将文本数据存储到 BLOB 列中,然后在检索时 gzuncompress 数据吗?还是应该使用 MySql 的 COMPRESS/UNCOMPRESS 函数?我倾向于使用 PHP,以防我将 Web 服务器与数据库服务器分开,在那里我可以让 PHP 执行压缩过程而不是更有价值的数据库服务器,但我想知道最佳实践是什么。
注意事项:我仍然需要能够轻松访问旧的“章节”数据。如果需要,“墙”数据可以放入较慢的存储中,但目前没有必要。
环境: 6 Core AMD Opteron, 16 GB RAM, 256 GB SSD for MySql, Percona Server 5.5, Apache, CentOS 6, PHP 5.3, innodb_file_per_table 已启用,数据库和网络服务器在同一台机器上运行,数据库总大小为 30 GB,所有表是 InnoDB
架构:
CREATE TABLE `wall` (
`id_wall` int(10) unsigned NOT NULL AUTO_INCREMENT,
`id_author` int(10) unsigned NOT …Run Code Online (Sandbox Code Playgroud) 这是我当前的查询:
SELECT BusinessID as ID,
111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from
(
SELECT *
FROM
tableauxiliary
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)'
),
Latlong)=1
AND Prominent >15
) AS TA
Having Distance <= 18238
ORDER BY
Distance
LIMIT
0, 45
Run Code Online (Sandbox Code Playgroud)
请注意,他们我使用了子查询。它使用子查询的原因是因为我想要
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)'
),
Latlong)=1
Run Code Online (Sandbox Code Playgroud)
首先要完成。这将查询时间从 19 秒减少到 0.9 秒。
有没有办法提示mysql查询优化器,这样我就不需要使用子查询
更新:
我试过:
SELECT BusinessID as ID,
111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary
USE Index (LatLong_2,FullTextSearch)
WHERE
MBRContains(
GeomFromText (
'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)'
),
Latlong)
AND Prominent >15 …Run Code Online (Sandbox Code Playgroud) 我们有一个 innodb mysql 数据库,所以我们迷失了许多不同的 mysql 备份策略。有人谈论mysqldump,有人谈论第三方工具。有些表我们还计划运行分区。有什么好工具可以帮助完成这项任务?
我正在尝试使用 SELECT ... INTO OUTFILE 查询转储一个大表(40GB,600,000 行)。我想使用它,因为我希望我的结果以特定方式排序(因此 mysqldump 不够好)。
问题是,我收到错误代码 28。我很确定这是因为默认 /tmp 位置的磁盘空间不足。如果我可以在运行时指定用于 tmp 的位置,我在其他地方的磁盘上有足够的空间。
我发现我可以通过修改 my.cnf 来更改 tmpdir,但是我没有足够的服务器权限来修改它或重新启动 mysqld。
这里的解决方案是什么?
编辑:一些答案建议使用 mysql -e。我可能不得不走这条路并对我的文件进行后处理。我想使用 SELECT ... INTO OUTFILE 的原因是因为我想
fields terminated by '\t'
escaped by '\\'
lines terminated by '\r\n' ;
Run Code Online (Sandbox Code Playgroud) 最初使用 5GB+ 填充数据库以避免大型事务日志时的标准流程是什么?根据我的理解,日志文件会在初始加载后跳转到较大的大小,并且从那时起磁盘空间不会减少。定期事务日志备份将释放文件中的空间,但文件仍会很大。
那么是否建议将目标数据库设置为简单备份,加载数据,使用 CHECKPOINT 截断日志,然后将数据库设置为完全备份模式?
此外,我知道可以对日志执行收缩文件操作,但有人说永远不要使用它,其他人似乎建议将其作为解决方案。有什么想法吗?
MySQL 5.1.4x (Windows) | 数据库
我最近从 mySQL 数据库(几十万行)中清除了数据,我打算使用
OPTIMIZE TABLE LOGTABLEFOO1,LOGTABLEFOO2,LOGTABLEFOO3;
Run Code Online (Sandbox Code Playgroud)
为了减少文件系统中的空白空间占用的数据空间。
我担心的是,一旦我开始执行此命令,我将不知道要花多长时间或在此过程中处于什么位置。无论如何我可以确定这些信息吗?据我所知,没有进度指示器。
我有一些许多用户需要访问的表:
mysql> show create table v3_cam_date\G
*************************** 1. row ***************************
Table: v3_cam_date
Create Table: CREATE TABLE `v3_cam_date` (
`campaignid` mediumint(9) NOT NULL DEFAULT '0',
`totalclick` mediumint(9) unsigned NOT NULL DEFAULT '0',
`totalview` int(11) unsigned NOT NULL DEFAULT '0',
`realclick` mediumint(9) unsigned NOT NULL DEFAULT '0',
`clickcharge` mediumint(9) unsigned NOT NULL DEFAULT '0',
`viewcharge` int(11) unsigned NOT NULL DEFAULT '0',
`uv` mediumint(9) unsigned NOT NULL DEFAULT '0',
`uc` mediumint(9) unsigned NOT NULL DEFAULT '0',
`dt` date NOT NULL DEFAULT '0000-00-00',
`ctr` …Run Code Online (Sandbox Code Playgroud) mysql ×9
innodb ×4
backup ×3
mysqldump ×2
alter-table ×1
amazon-rds ×1
btree ×1
index ×1
locking ×1
logs ×1
mysql-5.1 ×1
mysql-5.5 ×1
optimization ×1
partitioning ×1
performance ×1
replication ×1
sql-server ×1
subquery ×1
windows ×1