V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wxf666  ›  全部回复第 8 页 / 共 37 页
回复总数  731
1 ... 4  5  6  7  8  9  10  11  12  13 ... 37  
2024-09-11 23:16:30 +08:00
回复了 saveai 创建的主题 程序员 请问如何实现大文件夹即时浏览器下载
@okakuyang #4 能不能遍历下文件,提前算好总大小,以《打包存储》形式压缩,传输过程中由 gzip 压缩呢?
2024-09-09 14:07:01 +08:00
回复了 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)
```
2024-09-07 22:39:32 +08:00
回复了 seekseat 创建的主题 Go 编程语言 运算符重载有什么实际用途?感觉很鸡肋
@PopRain #10 有没有 greaterEqualThan() 啥的。。

还是叫 greaterThanOrEqualTo()。。

https://i.imgur.com/krir4IG.png https://i.imgur.com/krir4IG.png
2024-09-07 22:25:28 +08:00
回复了 seekseat 创建的主题 Go 编程语言 运算符重载有什么实际用途?感觉很鸡肋
@ty29022 #11 为嘛 / 只能是除法的意思,而不能是分隔符呢?(比如斜杠青年)

那同理,字符串拼接,也不该用 +,而是像拼接矩阵那样,[str1 str2 str3] ?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
2024-09-06 20:25:29 +08:00
回复了 archxm 创建的主题 Android 安卓手机的性能够不够外接显示器?
如果真能替代了,厂商的低端本可咋卖呀。。
2024-09-06 20:15:46 +08:00
回复了 chaleaochexist 创建的主题 程序员 同时操作数据库和 minio,如何保证最终一致性
@AEnjoyable #2 如果执行完 minio.uploadfile(xxx,yyy),就突然崩了,数据是不是就不一致了
2024-09-06 12:32:00 +08:00
回复了 Xrall 创建的主题 数据库 数据库查询优化到底该怎么做?
@showB1 #35 你的意思是,虽然现在消费级固态,能做到 100W 随机读写 / 秒,

但 MySQL 没能完全利用好这个资源,所以做不到?


请教一下,主要是什么方面耗时过多了呢?

- 网络 IO ?
- 等待锁?
- ……?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
2024-09-05 22:15:44 +08:00
回复了 Xrall 创建的主题 数据库 数据库查询优化到底该怎么做?
@xuanbg #32 按理说,现在平民级固态完全做得到呀?

5000 条就算全走固态 IO ,应该 0.005 秒就好?


耗时在什么地方呢?网络 IO 吗?还是 MySQL 的锁啥的?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
2024-09-05 13:49:03 +08:00
回复了 Xrall 创建的主题 数据库 数据库查询优化到底该怎么做?
@xuanbg #25 现在千元消费级固态,不是都支持 100W 随机查找/秒 了吗?

换句话说,即使服务器内存只有几百 MB ,MySQL 完全用不了缓存,所有读写都走固态 IO ,

随机查找 50W 行,也应该 0.5 秒就能搞定?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png

https://i.imgur.com/uB205yf.jpeg
2024-09-04 11:52:47 +08:00
回复了 V392920 创建的主题 程序员 大佬们,来寻求个方案,对比查询怎么才能最快
就 16MB 内存数据,你直接用语言自带的 Hash / HashMap / Dict / Object / Unordered_map / Table ,不行吗?
2024-09-03 12:04:09 +08:00
回复了 chen0520 创建的主题 Go 编程语言 有没有人在生产用过 sqlite+nas 分布式存储的?
SQLite 不适合分布式写入。

要有高的写并发,就得利用 WAL ,尽可能缓冲多点事务,再落盘写入。

而官方说,WAL 模式要求所有进程在同一主机上,不能在网络文件系统上工作:

> All processes using a database must be on the same host computer; WAL does not work over a network filesystem. This is because WAL requires all processes to share a small amount of memory and processes on separate host machines obviously cannot share memory with each other.


@wwd179 #12

单机上使用的话,利用好 WAL ,加上外部互斥锁(或者一个进程专门处理写请求),可以实现很高的并发。

这两天我测试过,在电视盒子上(单核 Nginx 默认页压测 1W QPS ,性能不及 6 年前骁龙 636 千元机一半),

Python 的 FastAPI + SQLite + 去年本站被爬的千万数据:

- 200 模拟发帖回帖 + 全文索引 / 秒
- 1100 获取整帖(包括回帖者信息) / 秒
能不能像聊天记录一样,只拉取有更新却没下载过的?

简单做法:配置项放数据库里,标记创建/更新时间。

客户端开启时,拉取 [上次开机时间,现在] 范围内的新配置项?

https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
2024-09-02 03:54:28 +08:00
回复了 ChainLock 创建的主题 程序员 Linux 写时复制问题
@dhb233 #7 请教一下,4GB 的程序被 fork 之后,系统会设置 100W 页不可写吗?(假设 4KB/页)
2024-08-29 20:09:44 +08:00
回复了 TimG 创建的主题 程序员 求问数据清洗的简易方法
@NoOneNoBody 老老实实 CASE WHEN 各种情况呢?

分不清年月日的,就标记为错误?(反正换人来识别,也是标错呀)

然后不断审查标为错误的日期,看有啥情况会被遗漏,完善 WHEN ?
2024-08-29 19:14:05 +08:00
回复了 TimG 创建的主题 程序员 求问数据清洗的简易方法
为啥看第一行需求,觉得用纯 SQL 写,也没啥难的呢。。

可以给几行数据(敏感数据用其他字符串代替就好)看看吗?
一个 `sort` 命令不就行了嘛。。你的日期部分也满足默认字典序

里面有个选项:`-m, --merge 归并已排序的文件;不进行排序`

你可以尝试如下命令(用了 `scp`、`curl` 两种方式,流式远程获取日志文件。远程服务器可以 `python3 -m http.server` 临时开个服务端):

```shell
sort -m 本机日志.log <(curl -s http://远程主机 1IP:服务端口/路径/日志.log) <(scp -O 远程主机 2 用户 @远程主机 2IP:/路径/日志.log /dev/stdout) >合并后日志.log
```


如,`sort -m <(seq 1 4) <(seq 3 6) <(seq 5 8)` 执行效果为:

```
1
2
3
3
4
4
5
5
6
6
7
8
```
2024-08-20 23:47:05 +08:00
回复了 MrLonely 创建的主题 数据库 每个 Docker 单独使用 SQLite 和中心化部署 PostgreSQL 怎么选择?
@yinmin #17 用外部互斥锁,保证同一时间只有一个写入呢?

我试了下,WAL 模式下,开事务写入一条 1KB 记录再提交,每秒能有 3W 的 TPS ?

而且 WAL 模式下,写不影响读,意味着任何时候,都能有无数个并发读?
2024-08-07 23:29:24 +08:00
回复了 qians666 创建的主题 程序员 没接触股票交易系统,想问下大家,写个交易系统有多难。
@FantaMole #10
@Sawyerhou #13

光速 30W KM/S ,一微秒才走 300 米,

这是要在交易所附近三公里下单,才能几微秒上报成功吗?

是这么算吗? https://i.imgur.com/F29pmQ6.png https://i.imgur.com/F29pmQ6.png
2024-08-03 19:32:41 +08:00
回复了 webeasymail 创建的主题 Java 有什么好用的轻量级搜索服务?
@webeasymail 下载个开源 simple 中文分词插件,再写几行 SQL ,也会投入很多精力吗?
1 ... 4  5  6  7  8  9  10  11  12  13 ... 37  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1434 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
♥ Do have faith in what you're doing.