V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wxf666  ›  全部回复第 20 页 / 共 34 页
回复总数  665
1 ... 16  17  18  19  20  21  22  23  24  25 ... 34  
@longmeier90 就算是 8 个 100 万行的表,每行 1KB 的数据,全部缓存也大概需要不到 8 GB 内存而已呀

是内存不够,导致联表慢吗?

如果不依赖数据库的 left join ,而是自己获取主要数据后,再手动查询 8 次表(若已花 8 GB 代价全部缓存至内存中了),最后组装数据,也很慢吗?
@longmeier90

> 加一些冗余字段是为了查询是方便。很多统计都会联表查询数据量大的时候就会慢

好奇问一下,一般会连多少张表?被连的表一般有多大?(比如,一般连 千万级患者表 等类似级别的 5 张表?)
@liuidetmks 可能你说的是 [灾难性回溯]( https://zh.javascript.info/regexp-catastrophic-backtracking ) ?


@blackantt 实在不想改你的正则了,你自己去 regex101.com ,把你的正则、html 丢进去,看看都匹配了 7 个啥吧

帮你把正则改成这样,然后在左边选择 `ECMAScript (JavaScript)` 引擎,可以看到每个匹配 *(淡蓝色)* 及其各自的 6 个 `(.*?)` *(绿橙紫粉红绿)* 都长啥样:

```regex
<div class="css-em857x"><a title="(.*?) profile" href="\/profile\/\d{6,8}">(.*?)<\/a><\/div><\/h4>(.*?)title="(.*?)"(.*?)<\/span><\/div><div class="MuiBox-root css-15ro776"><span aria-hidden="true" title="China" (.*?)1 shared interest: Languages &amp; Cultures<\/p><\/div><div class=
```


写了段用 lxml 库的 xpath 功能抽取结果的 Python 代码:

*( V 站排版原因,行首加了全角空格,记得删除)*

```python
import lxml

html = lxml.html.parse(r'C:\Users\dengz\Downloads\out8.txt')

for node in html.xpath(
  '//div[@role="listitem" and '
  './/div[@class="MuiBox-root css-k008qs"]/*[2] and '
  './/p[contains(text(), "1 shared interest")]]'):
  n1 = node.xpath('.//a[text()]')[0]
  n2 = node.xpath('.//div[@class="MuiBox-root css-15ro776"][2]/span')[0]
  print([n1.get('href'), n1.text, n2.get('title')])
```
2022-10-10 19:28:23 +08:00
回复了 yagamil 创建的主题 Python nohup 运行 Python flask,后台有 subprocess wait 可是不会进行操作
为嘛不能用 request 、aiohttp 等库,在 Python 里下载呢?
@blackantt 粗试了一下,Python 的正则是没问题的,因为在 regex101.comregexr.com 、Notedpad++ 等,都匹配到了相同的结果

初步认为,你的正则出问题了
2022-10-10 15:51:30 +08:00
回复了 kestrelBright 创建的主题 程序员 求教 mysql 表设计
@kestrelBright 我觉得当前表结构,足够你用 SQL 实现那俩需求了

不知你说的『当前方案不够好』,是不好在哪儿


@7911364440 这个『逾期表』,是只能统计『当天』哪些用户违约,还是『任意一天』(楼主好像需要后者)
2022-10-10 14:39:58 +08:00
回复了 kestrelBright 创建的主题 程序员 求教 mysql 表设计
你是不知道怎么写 SQL 实现那俩搜索吗?

还是写了 SQL ,但速度太慢,问怎么提速?


要不放一下你当前的表结构和 SQL ?
怎么下载样例文件呢。。还要注册个账号?会不会积分不够,还得灌个水啥的?

除非搜索 /替换需求特别简单,否则正则不适合用于 html xml 这种数据上

推荐 BeautifulSoup lxml 等库,使用里面的 css selector 或 xpath 功能
2022-10-05 15:26:29 +08:00
回复了 s82kd92l 创建的主题 Android 旧手机当 Linux 服务器的吐槽和讨论
@s82kd92l 反正我认为,只是跑点博客、网站、爬虫啥的,安卓手机的性价比,应该比树莓派之类的高

闲鱼上 骁龙 845 的小米 8 都才三四百了,这个价格的树莓派,性能完全比不上

我也有一台 红米 Note 5 ,骁龙 636 ,写了个 Python 爬虫,凌晨爬小说站,峰值可以每秒爬 700 ( json 格式)网页、解析、UTF-16 编码(中文内容这种编码省空间)、全本数据合并、lzma 压缩存档
2022-10-05 15:15:24 +08:00
回复了 s82kd92l 创建的主题 Android 旧手机当 Linux 服务器的吐槽和讨论
@s82kd92l 自己 mount /dev/xxx 呢,是不是就不用经过安卓的机制了

(我不是很懂安卓。反正我是自己这样 mount 一张 ext4 的内存卡的,不想用 exFAT )
2022-10-05 14:58:22 +08:00
回复了 s82kd92l 创建的主题 Android 旧手机当 Linux 服务器的吐槽和讨论
为嘛不用 Linux Deploy 呢?

docker 好像安卓的 Linux 内核不支持。需要自己重新编译

安卓有很多机制为了省电的机制。我在 Debian testing 里可以通过 sudo iw dev wlan0 set power_save off 关闭 WIFI 节能模式
2022-10-03 01:18:27 +08:00
回复了 MrLonely 创建的主题 SQLite 在什么情况下一定要放弃 SQLite 采用 MySQL 呢?
@janus77 对于 SQLite 而言,宿主语言也可以(甚至更好地)完成相同的任务吧?

还能更好应对分库分表,利用上 ORM ,减轻数据库压力等


好吧,就算存储过程是吧。还有啥嘛?
2022-10-02 21:46:19 +08:00
回复了 Doragd 创建的主题 问与答 如何在 vercel 里面包含超过 50MB 的静态文件
@kkocdko 确实。拿了个 ~/.conda/pkgs/cache/e5e4a514.json ( 64.8 MB )试了下

- lzma 极限压缩后 7.14 MB ,解压时间为 0.7 s
- zstd 极限压缩后 7.26 MB ,解压时间为 0.1 s


@Doragd 或者,考虑用 pickle 存?文件又小,速度又快

上述文件用 pickle 存后,只需 35.1 MB 了

lzma 极限压缩后 7.06 MB ,zstd 极限压缩后 7.68 MB
2022-10-02 21:07:26 +08:00
回复了 MrLonely 创建的主题 SQLite 在什么情况下一定要放弃 SQLite 采用 MySQL 呢?
@janus77 请教一下,MySQL 比 SQLite ,多支持了什么实际较常用的『较复杂的表结构和查询语句』呢?
2022-10-01 15:31:47 +08:00
回复了 darnurash 创建的主题 MySQL 请教一个比较麻烦的 Oracle 转 Mysql 的问题
为啥不用 MySQL 8.0 呢?

这些窗口函数连 SQLite 都已经在 4 年多前支持了。连 SQLite 都不如的,我觉得应该换了
JSONPath ?

在线尝试: http://jsonpath.com/
2022-09-29 15:15:59 +08:00
回复了 monkeydream 创建的主题 数据库 请教一下聊天消息应该用什么数据库存储?
@monkeydream 我大概算算 MySQL 单表,受限于 IO 的读并发吧:

假设:
- B+ 树 4 层 *(若 InnoDB 、Dynamic 、16 KB 每页、8 字节主键、1 KB 一条消息,可容纳 110 亿)*
- 缓存前两层 *( 14 MB 内存代价)*
- 有 `(uid 4 字节, time 5 字节)` 索引
- 每个用户每次获取不超过 700 条消息 *(此时索引只需读一个叶节点)*
- **不缓存实际消息** *(就当所有用户都在获取历史消息吧。因为每个叶节点可能存着 15 个不同用户的消息,太散了,不会算『每次一个用户获取一堆消息时,能利用上多少缓存』,直接按最差情况算)*


设每秒有 x 人请求,平均每人有 y 条消息要获取,硬盘有 z 个 16 KB 的 IOPS ,那么:

2x (每人消耗 2 次 IO 去索引读取自某个时间以来的消息 ID 列表) + 2xy (每条消息都要 2 次 IO 去消息表读取) <= z


如,我的垃圾固态,16 KB 有 25000 IOPS (也就 400 多 MB/s )。那么:

每秒 100 人要获取消息时,平均每人能得到(不在缓存中的) 124 条历史消息?


(数据库新手,算的不对,恳请指出)
2022-09-29 11:34:42 +08:00
回复了 DaChuiZi 创建的主题 Python Python 多层 for 循环性能如何提高
同意 #1

1. 种类不多,你可以存成 `set[tuple[弹药, 该弹药能攻击的物体]]`:

```python
弹药能攻击的物体 = {
 (弹药 1, 物体 1),
 (弹药 1, 物体 2),
 (弹药 2, 物体 1),
 (弹药 2, 物体 3),
}
```

判断:`if (弹药 1, 物体 1) in 弹药能攻击的物体:`


2. 种类巨多,可能存成 `dict[弹药, set[该弹药能攻击的物体]]` 能省点内存?但比上面的慢

```python
弹药能攻击的物体 = {
 弹药 1: {物体 1, 物体 2},
 弹药 2: {物体 1, 物体 3},
}
```

判断:`if 物体 1 in 弹药能攻击的物体[弹药 1]:`
2022-09-29 11:30:03 +08:00
回复了 monkeydream 创建的主题 数据库 请教一下聊天消息应该用什么数据库存储?
@monkeydream 你要并发读多少啊?

那个帖子里反馈,MySQL 单表这么多亿,单次查询也能 10- ms 啊(噢,26 楼写错了)
2022-09-29 11:25:20 +08:00
回复了 monkeydream 创建的主题 数据库 请教一下聊天消息应该用什么数据库存储?
@b123405060 超过 500w 会怎样? B+ 树从 3 层 变为 4 层?

然后由于内存只能完整缓存前两层(前两层代价是 20~30 MB 内存,前三层代价是 20~30 GB ),所以 3 层变为 4 层,会导致实际 IO 由 1 次 变为 2 次,即速度下降 50%?

还是怎么个逻辑?

数据库新人,求指教
1 ... 16  17  18  19  20  21  22  23  24  25 ... 34  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5591 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 07:00 · PVG 15:00 · LAX 23:00 · JFK 02:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.