V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  qyvlik  ›  全部回复第 2 页 / 共 7 页
回复总数  131
1  2  3  4  5  6  7  
2021-06-23 09:17:24 +08:00
回复了 awanganddong 创建的主题 MySQL mysql 在 rc 模式下的锁机制
CREATE TABLE `pyjy_vd_member_feature_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL DEFAULT '0',
`feature_id` int(11) NOT NULL DEFAULT '0',
`state` tinyint(2) NOT NULL DEFAULT '1' COMMENT '1 尚未提交审核 2 正在审核 3 审核通过 4 审核拒绝',
`content` varchar(300) CHARACTER SET utf8 NOT NULL DEFAULT '',
`main_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `featrueid_memberid_state` (`featrue_id `,`member_id `,`state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户特质内容';

SQL 建表语句 `UNIQUE KEY` 才是声明唯一键的语法,推荐使用数据库控制唯一性,而不是使用程序控制。

多字段索引(联合索引)是指 `KEY index_name(field_1, field_2, field_3)`,你的原表是多个单列索引,参考 [多个单列索引和联合索引的区别详解]( https://blog.csdn.net/Abysscarry/article/details/80792876)。

由于你的原表是多个单列索引,所以在更新、删除、查询的时候,只能使用其中一个单列索引。至于为什么使用 feature_id 这个字段,取决于 MySQL 的开销计算。
2021-06-22 18:02:53 +08:00
回复了 awanganddong 创建的主题 MySQL mysql 在 rc 模式下的锁机制
MySQL 单条的 查询、更新、删除语句中,只能使用一个索引(单字段索引或者多字段索引都称为一个索引)
@awanganddong
2021-06-22 10:31:01 +08:00
回复了 awanganddong 创建的主题 MySQL mysql 在 rc 模式下的锁机制
1. member_id_index,feature_id_index,member_feature_content_state_idx,member_feature_content_main_id_idx 这些索引无法再一次 Query 中使用。

2. UPDATE `pyjy_vd_member_feature_content` SET `view_count` = `view_count` + 85 WHERE `feature_id` = ? AND `member_id` =? AND `main_id` = ? AND `state` = ? 这个语句只会挑选一个索引。

3. 现在你知道死锁是由于 feature_id 导致,所以 UPDATE 的 WHERE 需要有 ID
4. SQL 语句修改方式如下:

SELECT id FROM `pyjy_vd_member_feature_content` WHERE `feature_id` = ? AND `member_id` =? AND `main_id` = ? AND `state` = ?
UPDATE SET `view_count` = `view_count` + 85 WHERE id = ? AND ...
2021-06-01 09:06:28 +08:00
回复了 vpao233 创建的主题 分享发现 搞了个免费实用的接口收集文档...
这里有个 Free for developers 的站点: https://free-for.dev/#/
ipv4 用 int 存,一个 ip 的可用端口数的理论值是 65535 左右,用 bitmap + 压缩保存。
然后查询可以用 redis 的 位操作命令加速。
2021-04-22 09:12:23 +08:00
回复了 cernard 创建的主题 分享创造 加密货币监控软件
可以考虑用 github.com/ccxt/ccxt 来支持大部分主流交易所
2020-11-25 15:56:30 +08:00
回复了 qingwalashi 创建的主题 问与答 付费征集 b2b.10086.cn 爬虫方案,需验证可行
基于现有 浏览器插件 进行抓取,例如 web-scraper 。
可以看一下这个项目: https://github.com/252860883/ArtQRCode
通过自定义图片素材,可以生成别具一格的二维码
2020-08-26 10:59:06 +08:00
回复了 statement 创建的主题 问与答 有没有托管 nginx 的云服务
域名在 godaddy 的话,可以直接重定向。或者试试 https://dashboard.easyredir.com 免费套餐支持一个域名重定向。到时不知道支不支持 https
k8s 平台应该可以设置类似 NAT 的设备(带公网 ip),这个设备作为集群统一的公网出口。
2020-08-19 16:28:56 +08:00
回复了 monkeyWie 创建的主题 Java 建议别升级 IDEA 到 2020.02
+1, lombok 偶尔抽风, idea 2020.02
2020-08-03 16:16:31 +08:00
回复了 lixiaojian 创建的主题 PHP PHP 有开源比较成熟的 saas 解决方案不?
是不是要支持多租户吗?
2020-08-03 11:02:33 +08:00
回复了 x1911 创建的主题 问与答 阿里云的 websocket 居然是收费项目?
@qyvlik 全站加速是类似 AWS 的 CloudFront 的东西吗
2020-08-03 11:01:57 +08:00
回复了 x1911 创建的主题 问与答 阿里云的 websocket 居然是收费项目?
全站加速是类似 AWS
可以对比一下掘金的云资源数量: https://www.zhihu.com/question/27641736/answer/814798641
2020-05-09 22:23:37 +08:00
回复了 VingeRayCN 创建的主题 程序员 各位程序员朋友可以说说自己的加班情况嘛
@murmur 没有午休?
2020-04-29 23:06:10 +08:00
回复了 zealinux 创建的主题 MySQL MySQL 该不该给 status 添加索引?
根据业务要求加,就是根据哪种 sql 查询多的去加索引,还要根据具体 sql 查询拼接的条件。
所谓 status 区分度低的前提是 0,1 均匀分布,说白了可能各 50%,这样加索引就没啥效果。按照你的问题描述,以及可能的常用场景,0 和 1 的分布不是均匀的,一般是 0 >> 1,就是说 status 为 0 可能就是全表记录的 一小部分(例如 1%),那么如下的查询 sql:
select * from table where status = 0
就会走索引,而且索引扫描的行数也不会太多。
但是如下的 sql:
select * from table where status = 1,可能会走索引,但是扫描的行数过多时会让 mysql 做出扫描全表的执行计划。
select count(*) from table,在有索引的情况,可能会走索引,具体看看执行计划。
2020-04-21 16:48:37 +08:00
回复了 yangzzzzzzzt1 创建的主题 程序员 清华大一 c++作业"雷课堂"大家怎么看?
从工程角度来说,使用 Qt 栈(自带界面和网络库、数据库处理、QtAV )这一套技术可以处理大部分了。
不过才大一就上这种难度的作业,就像在说 "Fly b*tch"。

https://www.reddit.com/r/BirdsBeingDicks/comments/6tydjw/fly_bitch/
2020-04-14 09:58:53 +08:00
回复了 hyd8323268 创建的主题 MySQL mysql 近千万级数据表,在分页时有什么好的方案吗。
先为表建好时间戳的索引,时间戳字段是否唯一,关系不大。只要不是说 800w 记录,时间戳的取值集合就百来个,这个时间戳就有建立索引的价值。

1. 摈弃传统的精确分页,直接走瀑布流加载方案
- 取第一页:select * from logs order by create_time desc limit 10
- 可以在前端将 min(create_time) 取出,作为第二第三页的查询条件
- select * from logs where create_time < pre_min_time order by create_time desc limit 10

2. 仍然想使用精确分页
1. 使用时间区间将要扫描的条数减少,例如 一天的日志数量
2. 使用一些 sql 查询进行优化,例如 max, min 查找出对应的时间范围、id 范围

3. 使用其他的查询方案,例如 es 、mongo 、redis

ps: 如果一些索引效果不明显,考虑将 myisam 表数据导入新的 InnoDB 的表,在 InnoDB 表上建立索引。
1  2  3  4  5  6  7  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2751 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 14:57 · PVG 22:57 · LAX 07:57 · JFK 10:57
♥ Do have faith in what you're doing.