我有大约300个文本文件,其中包含跟踪器,种子和同伴的数据.每个文件的组织方式如下:
tracker.txt
time torrent
time peer
time peer
...
time torrent
...
Run Code Online (Sandbox Code Playgroud)
我有每个跟踪器的几个文件,并且重复了大部分信息(相同的信息,不同的时间).
我希望能够分析我所拥有的内容,并报告有关事情的统计数据
数据的庞大数量使我难以接受.这是我尝试过的.
MySQL的
我把所有东西都放进了数据库; 每个实体类型一个表和用于保存关系的表(例如,此torrent位于此跟踪器上).
将信息添加到数据库的速度很慢(当我尝试这个时,我没有13GB的信息),但之后分析这些关系是不行的.每个稍微复杂的查询都需要24小时才能完成(如果有的话).
一个示例查询将是:
SELECT COUNT(DISTINCT torrent)
FROM TorrentAtPeer, Peer
WHERE TorrentAtPeer.peer = Peer.id
GROUP BY Peer.ip;
Run Code Online (Sandbox Code Playgroud)
我尝试在我的my.cnf文件中增加内存分配,但似乎没有帮助.我使用了my-innodb-heavy-4G.cnf设置文件.
编辑:添加表格详细信息
这是我正在使用的:
Peer Torrent Tracker
----------- ----------------------- ------------------
id (bigint) id (bigint) id (bigint)
ip* (int) infohash* (varchar(40)) url (varchar(255))
port (int)
TorrentAtPeer TorrentAtTracker
----------------- ----------------
id (bigint) id (bigint)
torrent* (bigint) torrent* (bigint)
peer* (bigint) tracker* (bigint) …Run Code Online (Sandbox Code Playgroud) 有没有办法读取一个小的int(即范围-128..127的1字节int)使用scanf?考虑以下代码:
char x;
scanf("%d", &x);
Run Code Online (Sandbox Code Playgroud)
程序将读取一个int,最可能是4个字节,并尝试将其写入x的地址,从而违反了该地址后存储器中的3个字节.
我知道有一个短的int(%h)的修饰符,但我还没有听说过一个小的int(char)?