V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  la0wei  ›  全部回复第 3 页 / 共 36 页
回复总数  719
1  2  3  4  5  6  7  8  9  10 ... 36  
2023-11-13 14:59:48 +08:00
回复了 xinJang 创建的主题 宽带症候群 爽了几年的 bug 双不限给玩挂了
@LifeAqua @Musong https://v2ex.com/t/980301#reply1 推广是公共板块中我刷到帖子最少的了,这样的帖子他也能回复一个,一般不需要不都是默默关闭吗。目前 384 点击,只有他一条回复,同时强调了“双不限”

https://v2ex.com/t/978464 #40 主题是问用什么卡,他回复“目前使用境外卡双不限 每月 300g 流量”

至于是炫耀还是卡商引流,这点无从得知
2023-11-13 10:06:28 +08:00
回复了 xinJang 创建的主题 宽带症候群 爽了几年的 bug 双不限给玩挂了
楼上一堆求介绍的不要发了,看这人过往留言记录,应该是所谓澳门红卡,是限速不限量的卡,至于他的为什么不限速,这个无从查证。他也没有分享这款卡的意思,只是想强调自己有不限速不限量可访问外网的卡而已
2023-09-07 14:31:48 +08:00
回复了 putyy 创建的主题 程序员 更新了一下 res-downloader,新增批量下载!
发到分享创造受众会多些,小众软件的论坛也可以
2023-09-05 11:22:20 +08:00
回复了 monkeyWie 创建的主题 分享创造 🎉开源下载器 Gopeed v1.3.11 发布,已经支持 iOS 了
有类似 aria2 的远程控制功能吗
aria2 和 idm 这两个软件槽点太多,还有那么多人喜欢用
2023-08-23 19:50:58 +08:00
回复了 kylebing 创建的主题 音乐 分享一个宝藏作者: Daveed 吉他纯音乐
bliss 的旋律不错
2023-08-23 14:13:20 +08:00
回复了 zkw111 创建的主题 硬件 帮我看一下这一套 E5 的配置能行不
我也想买个 C612 的准系统,之前买的寨板,质量实在太差了,开始 sata 掉盘,然后 m2 接口螺丝底座掉了,再后来开不了机。准备买个联想 p510 ,或者 HP Z440 。联想 p500 太老了点,差不多 10 年了。
2023-08-17 09:40:54 +08:00
回复了 Comyn 创建的主题 问与答 你们城市坐地铁会被人工安检和测水吗
@horizon #49 反正也没什么公信力了,先比嗓门大,把反对的声音压过去再说
等一个类似下面的合订本
国家统计局 7 月说:按规律,8 月份以后青年失业率会下降
国家统计局 8 月:全国青年人等分年龄段的城镇调查失业率暂停发布
2023-08-16 15:04:37 +08:00
回复了 Comyn 创建的主题 问与答 你们城市坐地铁会被人工安检和测水吗
@horizon 不如按人头发钱。大头都被谁拿走大家都懂
2023-08-15 09:33:08 +08:00
回复了 CHENYIMING 创建的主题 问与答 你的微信,真的是你的微信吗?
图片 1 中并没有“网络错误,请稍后重试”。
这是什么技术手段?
2023-06-27 11:49:42 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666
看定义应该是覆盖索引,我把 date ,devicecode ,code ,status 四个字段做了一个索引。另外该数据库没有主键,因为 mysql 的数据是从 oracle ,用 PDI(kettle)抓取过来的,原表有个 NID 是主键,但没有抓取 NID ,一个原因是 kettle 在抓取数据时报错,有 NID 字样,但我无法完全定位错误原因,而在取消 NID 的抓取后,可以顺利完成数据抓取,二是我不需要该字段,只是为了生成报表方便自己而已,所以没有抓取该字段,自然就没有主键索引

sqlite 确实可以深挖下,后面再改改程序

非常感谢这几天的指导!
2023-06-26 11:46:44 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666 不修改任何代码,只配合使用索引生效后的 mysql ,200 万数据,原先查询 2000 个编号,每个编号 6 次查询,需要 3 小时+,现在只要 16S !
当然没有你的 1 亿数据效果那么夸张,不过也够用了。

后面感兴趣几点,可能会做测试。
1.我把数据量加大,大概最多到 1200W 的样子(存量历史数据就这么多),查询效果怎样

2.用 sqlite 读数据库文件进内存查询,速度不够快,单条查询在 0.5S 的样子,是因为读取数据时没有读取索引吗,而你在内存构建数据库,我看是有索引的,可能就是速度差异的原因。

3.sqlite 读入内存查询和常规的方法速度比较
2023-06-26 11:07:02 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666 确认问题所在了,之前创建的索引在查询时没有使用,为什么没有使用就不知道了。

用 explain 看了下 sql 语句,发现没使用索引。把之前用 GUI 工具创建的索引删除,用 sql 语句重新创建了索引,再次 explain ,能看出使用了索引。
再次执行 select ,HDD 上执行速度多数在 0.1 秒以下,慢的也在 0.1s 的量级。

在 win10 SSD 上的 mysql 执行同样的操作,速度还稍稍有点慢,有些不能理解。可以看出,磁盘读取比重建索引之前要少的多,只有几十兆的样子,这才是数据库正确的打开方式啊

不过还是蛮喜欢内存数据库的。
https://stackoverflow.com/questions/3850022/how-to-load-existing-db-file-to-memory-in-python-sqlite3
使用
import sqlite3

source = sqlite3.connect('existing_db.db')
dest = sqlite3.connect(':memory:')
source.backup(dest)
可以把数据库文件读取到内存。昨晚在家简单测试,效果不错,可惜数据量不够,不能体现出完整效果

早上测试多个查询,初始需要读取整个数据库,首次查询较慢,后面速度就快多了。不过速度似乎是没有 mysql 快的,索引的效果看来是很好的
2023-06-26 00:18:28 +08:00
回复了 dzdh 创建的主题 信息安全 有没有什么类似 BOXCRYPTOR 的软件
rclone
2023-06-25 21:00:59 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666
执行的语句除了字段名称不同,和你的其实是一样的,日期写法不同,不过我猜不是重点。

我也准备弃用 mysql ,sqlite 确实方便。
另外,延迟的问题搞不定。我在 heidisql ( gui 工具)执行 sql 时,任务管理器的磁盘是有非常明显的读写,峰值大概在 130M 的样子,硬盘读取回落后,heidisql 立刻就出结果了。连续查询,磁盘就相应的出现读取。有明显的相关性

查数据读盘很正常,读那么多数据就玩完了,我也怀疑过索引有问题,使用 explain 执行,看到是利用了索引的,我再研究下这块。明天检查下索引,再重建下试试看。

我最初的方法是用 sql 查询把数据读取到 python 中,然后自己写逻辑,现在想来其实是解决不了延迟情况下一个非常好的方案了。你的方法更进一步,使用内存数据库,这样可以省去编写逻辑编写过程,直接使用 sql ,应该是最合理的。

只要延迟不解决,就只能搞内存数据库了

https://dba.stackexchange.com/questions/172030/mysql-network-time
这里有遇到和我一样问题的人。明明本地数据库,为何有 network time.
2023-06-25 18:19:32 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666 太牛了!我想来 V2EX 写下进展的,正好看到你的回复。


先说下我这边的进展,尝试 1 台 win10 + SSD 的机器,在 heidisql 内执行 sql 依然有高达 3 秒以上的延迟。

再次尝试 sqlite,这次新建了索引,平均时间在 400ms~3000ms 。有数据的快,查询结果为空的反倒慢达 3 秒才有结果,这点让我不解。

另外你的帖子给了我一点灵感!
然后我在 heidisql 查询的时候打开任务管理器,发现每次执行 sql 后,ssd 都有大量读取,估计这就是延迟高的原因。而 sd 在瞬时突发传输没有和 hdd 拉开差距,导致变更硬件没有明显的改观。

使用 DB Brwoser for SQLite 就没有这个问题,虽然延迟不定,不过查询过程中没有硬盘 IO 。

查看内存占用,mysqld 占用 210M ,DB Brwoser for SQLite 占用 110M 。

再回头看你的回复,你的结论是对的
***我认为,主要是你把数据库里的内容,全部传输到 Python ,导致长时间耗时在数据传输上。***

不知道我的 mysql 是否运行正常,每次查询都要全数据库读取,还是说索引没有起作用?
sqlite 的查询都没读取数据库文件,是因为已经在程序打开的缘故吗? 110m 的内存占用,显然远小于 sqlite.db 700M 的文件大小,或许这应该是数据库正常的工作方式,mysql 我默认安装配置有问题?

显然内存数据库速度快的多。
搜索到 sqlite 书库读取到内存的方法:
https://stackoverflow.com/questions/3850022/how-to-load-existing-db-file-to-memory-in-python-sqlite3

上班第一天太忙了,后面有空我改造下程序,把查询数据库改成查询内存中的数据库
目前思路就是这样

后面还是想知道 mysql 读取数据库的原因,这显然不是数据库正常的工作方式
另外,可以测试下在 linux 下默认安装 mysql 查询是否也是这样的速度

非常感谢,后面抄你一点代码:)
2023-06-24 15:31:26 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666 感谢热心回复,前两天回老家,今天才有机会碰电脑,而且文字交流输出效率不高,有点犹豫。另外我思路有点跳脱,不知道能不能讲明白
回复里不知道 markdown 能不能用,姑且试下


数据库主要字段
| devicecode(varchar18) | date(datetime) | code | status(char1) |
| --------------------- | ---------------- | ---- | ------------- |
| 1000001 | 2023-06-24 14:20 | 9527 | 4 |
| 1000001 | 2023-06-24 14:22 | 9528 | 1 |
| 1000002 | 2023-06-24 14:22 | 9527 | 1 |
| 1000002 | 2023-06-24 14:25 | 9530 | 3 |
| 1000003 | 2023-06-24 14:25 | 9527 | 3 |
| 1000004 | 2023-06-24 14:25 | 9527 | 4 |

devicecode 设备名称
date 时间
code 该条数据所属的业务分类
status 该条信息的分拣状态,有 1 上传成功,2 待审核,3 作废,4 上传失败等等



csv 主要两个信息。甚至只有设备编号也可以,因为读写都是指定列表位置,主要作用是占位,列表修改和 append 是不同的操作,对我的需求来说修改更灵活一些

| 设备编号 |设备名称|3 个月内数据量| 3 个月内上传量( status 1 )| 1 个月内数据量 | 1 个月内上传量( status 1)| 1 个月内 9527 数据量| 1 个月内 9527 上传量|
| -------- | ---------------- | ------------ | ----------------------- | ------------ | ------------------------ | ---------------- | ---------------- |
| 1000001 | 我不知道这是什么 1 | 占位 | 占位 | 占位 | 占位 | 占位 | 占位 |
| 1000002 | 我不知道这是什么 2 | | | | | | |
| 1000003 | | | | | | | |
| 1000004 | | | | | | | |
| 1000005 | | | | | | | |

程序逐行读取 csv 文件为列表类型,获取设备编号,在数据库内查询。
可以看到,我想获得
1000001 设备 3 个月内数据总量
1000001 设备 3 个月内上传的数据总量
1000001 设备 1 个月内数据总量
1000001 设备 1 个月内上传的数据总量
1000001 设备 1 个月内业务代码为 9527 的数据总量
1000001 设备 1 个月内业务代码为 9527 且上传成功的数据总量




上面的都是用 select count(*)查询,似乎不能优化
不过再看一个你就明白了
1000001 设备 3 个月内最新一条数据
select * from info where date>date_sub(NOW,INTERVAL 3 MONTH) AND DEVICECODE=1000001 order by date desc

1000001 设备 3 个月内最新一条上传成功的数据
select * from info where date>date_sub(NOW,INTERVAL 3 MONTH) AND DEVICECODE=1000001 AND STATUS=1 order by date desc
cursor.fetchone()第一条就是了
这个帖子最初目的是第二条 sql 查询能复用第一条的结果来加速查询


由于查询速度太慢,还有很多需要查询的数据没有写

目前只能先读出 3 个月数据,循环读取,设置几个计数器
fetchone 第一条数据做最新数据
status=1 的是最新上传成功数据 upl += 1
status=1 and code=9527 则 upl += 1 同时 upl9527 += 1
等等等

总之这么排列组合,把 select count(*) 执行的任务用 python 来实现





原先我以为是 sql 执行慢,所以希望
select * from info where date>date_sub(NOW,INTERVAL 3 MONTH) AND DEVICECODE=1000001 AND STATUS=1 order by date desc 能使用 select * from info where date>date_sub(NOW,INTERVAL 3 MONTH) AND DEVICECODE=1000001 order by date desc 结果查询

但是后来发现不是 sql 执行效率的问题,所以这个问题目前意义不大了。

我在找目前 sql 执行只用 0.1 秒,网络耗时几秒的原因,这个解决的话,多执行几条 sql 不是问题

估计打了有上千字,思路不清,表达不畅的地方还请见谅
2023-06-21 20:57:24 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@wxf666 这个不能说,police 相关的内容,表结构我都不能说。
2023-06-21 17:31:04 +08:00
回复了 la0wei 创建的主题 Python Python + mysql 多条相似 sql 语句查询如何加速?
@TimePPT csv 是查询条件。这个操作不会……压根就不知道有这个操作。待我搜索看看,谢谢提醒
1  2  3  4  5  6  7  8  9  10 ... 36  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1208 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 18:04 · PVG 02:04 · LAX 10:04 · JFK 13:04
Developed with CodeLauncher
♥ Do have faith in what you're doing.