怎么查询mysql的最大连接数?
数据库连接池并不能减少MySQL查询的消耗,而是为了避免MySQL维持大量的数据库连接.
MySQL最大连接数max_connections默认值为151(最大值可以过万). 假设一个worker进程保持一个到MySQL的长连接. 当Swoole服务的worker进程数(对应CPU核心数)超过151时,MySQL默认会拒绝新的连接. 假设一台服务器CPU核心数为32,开启32个Swoole worker进程. 当服务器数量达到4台时(32*4=128),MySQL才需要考虑配置更大的max_connections. 把max_connections调整为1510(默认值的10倍),可供40台Swoole应用服务器使用. 可见,当Swoole应用服务器过百时,数据库连接池才有意义,否则就是简单问题复杂化.
Swoole的MySQL连接池是通过异步swoole_mysql+SplQueue来实现的.
一般情况下,用PDO长连接就行了,连Swoole提供的异步MySQL客户端都可以不用,这样能保证数据库逻辑能够同步顺序书写,不需要像异步那样嵌套回调.
mysqlin子查询怎么用?
mysql中in子查询的基本语法为:select ... from ... where column in (sub query)。
在使用时需要注意,如果子查询返回的是一个序列,要求序列的值类型必须与相比较字段的类型一致。
select中嵌套select?
mysql的read repeatable事务隔离级别下的select是快照读,不会上锁,不会被阻塞,update的读是最新版本读,会上锁,当然也会被阻塞,如果是select for update也会上排它锁,也会被阻塞
pg数据库和mysql数据库区别?
1.mysql支持多种存储引擎,存储引擎选择较为灵活,实际上一般都在用innodb。ddl放在server端,ddl语句的事物性支持较差,可能出现server级数据库丢失。pg的server稳定性更好
2 mysql数据存储结构为聚簇索引,通过主键查询效率较高,但是有很多局限性,比如插入只能顺序插入。不太适合超大数据非主键查询,访问二级索引需要回表。pg采用堆表存储数据,能够支持更大的数据量
3 pg不支持分区表,通过继承表的形式达到分区表的目的,在分区较多成千上万时,pg的继承表效率较差
4 mysql有间隙锁, postgresql数据库执行delete操作后,表中的记录只是被标示为删除状态,并没有释放空间,在以后的update或insert操作中该部分的空间是不能够被重用,VACUUM作用是删除那些已经标示为删除的数据并释放空间,vacuum需要定期运行,比较消耗IO
5 pg支持的数据类型(如gis),分析函数支持更多,还支持面向对象数据库。有更多的第三方开源工具辅助系统设计和实现
6pg支持存储过程和执行计划缓存,表连接和复杂查询能力更强。mysql优化器,运算符都较简单,适合简单的查询操作
7 pg主从采用wal日志物理同步,mysql使用binlog逻辑同步。物理同步可靠性更高,复制性能更高。
8 mysql仅支持嵌套循环表连接(8.0支持hash连接),pg支持nl,hash,merge join
9 mysql适用应用逻辑简单,轻数据存储和计算的场景,pg适合复杂的数据分析和特殊应用场景
还没有评论,来说两句吧...