wxf666 最近的时间轴更新
wxf666

wxf666

V2EX 第 280897 号会员,加入于 2018-01-08 18:22:24 +08:00
今日活跃度排名 1225
wxf666 最近回复了
@JensenQian #2 升级较大的,是核显部分?两倍性能?

另外,这网站是不是屏蔽国内了。。

我记得前一段时间,可以直接访问,还有中文选项的呀。。
5 天前
回复了 saveai 创建的主题 程序员 请问如何实现大文件夹即时浏览器下载
@okakuyang #4 能不能遍历下文件,提前算好总大小,以《打包存储》形式压缩,传输过程中由 gzip 压缩呢?
5 天前
回复了 weiqk 创建的主题 Python 这几天被 Python 搞得快崩溃了
@yb2313 #6
@miaotaizi #13

动态字段,很烦人吗?

那用 MongoDB 的,是咋忍下去的。。
7 天前
回复了 shrugginG 创建的主题 MySQL mysql 小白请教大佬一个问题
感觉你的场景,用 SQLite 也挺好呀。。


## 测试结果

*(同样表结构,每次开事务插入一行再提交)*

- 100W 行,104 秒,平均约 10000 TPS ,共 360MB
- 1000W 行,1450 秒,平均约 7000 TPS ,共 3.6GB


## 环境

- CPU:i5-8250U (六七年前的低压轻薄本)
- 内存:测试时占用 14 MB
- 系统:Deepin V20 (基于 Debian 10 )
- 软件:Python 3.9
- 固态:顺序:500 MB/s 读,300 MB/s 写;随机:20 MB/s 读,64 MB/s 写


## 代码

```python
# V 站吞空格,缩进改为全角空格了

import time
import random
import hashlib
import sqlite3

ROWS_PER_INSERT = 1
ROWS_TOTAL = 1000_0000
DB_PATH = '/数据库存放路径/名称.db'

db = sqlite3.connect(DB_PATH)
db.execute('PRAGMA journal_mode = WAL')
db.execute('PRAGMA synchronous = NORMAL')
db.execute('PRAGMA wal_autocheckpoint = 10000')

db.execute('''
   CREATE TABLE IF NOT EXISTS phishtank_database (
     id          INTEGER PRIMARY KEY,
     phish_id       INT,
     url         TEXT,
     url_sha256      TEXT UNIQUE,
     phish_detail_url   TEXT,
     submission_time   DATETIME,
     verified       TEXT,
     verification_time DATETIME,
     online        TEXT,
     target        TEXT,
     created_at      DATETIME DEFAULT (datetime('now', 'localtime')),
     etag         TEXT
  )
''')

insert_sql = '''
   INSERT OR IGNORE INTO phishtank_database
  (phish_id, url, url_sha256, phish_detail_url, submission_time, verified, verification_time, online, target, etag)
   VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
'''

first_id, = db.execute('SELECT IFNULL(MAX(id), 0) + 1 FROM phishtank_database').fetchone()
for next_id in range(first_id, first_id + ROWS_TOTAL, ROWS_PER_INSERT):

   rows = []
   now = time.strftime('%Y-%m-%d %H:%M:%S')
   for phish_id in range(next_id, min(next_id + ROWS_PER_INSERT, first_id + ROWS_TOTAL)):
     url = f'https://free-{phish_id}.webadorsite.com/'
     detail_url = f'http://www.phishtank.com/phish_detail.php?phish_id={phish_id}'
     rows.append((
       phish_id, url, hashlib.sha256(url.encode('utf-8')).hexdigest(),
       detail_url, now, 'yes', now, 'yes', 'Other', random.randbytes(16).hex(),
    ))

   with db:
     db.executemany(insert_sql, rows)
```
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   933 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 16ms · UTC 19:30 · PVG 03:30 · LAX 12:30 · JFK 15:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.