没有用过 mysql,听说 mysql 相对于其他数据库,性能表现不是很好,例如联表查询,in 查询,经常听说有博客描述 mysql 建议不用 left join,改用服务端进行 join,还有一个 in 查询操作不能超过 1000 个的说法,如果 mysql 进行 in 查询超过 1000 个会有性能问题。真的是这样么?
而某些人讲,mysql 现在有很多魔改版本,比 oracle 自己的还强,比如阿里云,那么 mysql 魔改版本哪些呢?不知道上面这些问题较好的处理了没有,与 postgresql 相比呢
1
ohao 2020-05-29 15:05:30 +08:00
MYSQL 这块取决于场景, 大部分都到不了瓶颈的
商用途我想没人会用不知名的"魔改版本" = 奇奇怪怪的修改 出些奇奇怪怪的问题找不到解决也没人解决,也没文档,长期维护也是问题 如果你说的是分支版本 有 mariadb / Percona / 阿里巴巴二次开发的那种 但是阿里巴巴开发的这种 部署是在集群上,很多特性和性能才能发挥出来 你觉得一个普通用途 CRUD 操作数据库, 人均在线低于 500, 有必要部署集群嘛 这种问题其实没结论的 1. 你说的 left join 取决于你硬件配置 + 索引 + 优化 + mysql 版本 2. 性能问题 取决你的应用场景是实时还是非实时, 是不是可以 Memcache/redis 缓存 3. 比 Oracle 强比喻没有意义的 , 我拿超算装 MYSQL 对比 E5 的 Oracle , 或者纯数字查询 vs 全文检索查询 ? |
2
hantsy 2020-05-29 15:06:57 +08:00
现在慢慢用 pg 多,还有就是 NoSQL 了。
|
3
lbmjsls1 2020-05-29 15:07:40 +08:00 via Android
想问楼主用的是 postgresql 吗
|
4
tctc4869 OP @lbmjsls1 是的,postgresql 相对于 sql server,中文文档不是很多,可视化配置项也不是很好,一些配置设置还得用命令行
|
5
lbmjsls1 2020-05-29 20:49:26 +08:00 via Android
@tctc4869 有几个问题想问一下,不知道你怎么解决的,有一个是开启备份后,wal 日志有什么方案,可以像 mysql binlog 一样看到执行语句吗
|
6
changdy 2020-05-30 10:17:25 +08:00
只用过 MySql , 表示有些 sql 的执行计划让人看不懂....
比如 a,b 两表是 1 对 N 的关系, 我想取 b 表对应的最大 id sql 如下: ```sql select a.*,max(b.id) bid from a ,b where a.type=10 and a.id =b.other_id group by a.id ; ``` 这种写法的执行效率很差. 然后我就需要略 hack 的写法 ```sql select a.*,(select max(id) from b where b.other_id =a.id) bid from a where a.type=10 ``` 想问下其他数据库处理起来会好一些吗? 还是这种 sql 有更优雅的写法 |