
mysql技术
文章平均质量分 84
DBAIOps社区
欢迎关注北京佰晟科技与南京基石数据联合打造的数据库智能化运维服务生态平台DBAIOPS社区。DBAIOPS以D-SMART社区版为纽带,构建一个用户、服务商、DBA、专家、厂家的协作平台,共同为数据库国产化生态服务
展开
-
高并发场景下优化spinlock
类似Pause命令在所有的多线程的CPU上都有,这个命令既让核心态的线程继续持有这个CPU(一个线程可以持续持有10毫秒的CPU而不需要退出,对于现在GHZ级别的CPU来说,10毫秒包含的时钟周期就很多了)而不用返回用户态,又可以让出CPU的核心执行硬件让其他CPU线程执行其他任务。除了优化SPINLOCK外,实际上我们还可以从另外一个渠道去优化SPINLOCK,那就是优化我们的应用,有可能优化应用需要花的成本更高,但是优化应用可以减少这种必须十分专业人员才能做的好的调整,从而可以提高优化的成功率。原创 2024-02-01 15:06:24 · 1709 阅读 · 0 评论 -
Innodb引擎的表上更换主键会发生什么
最后要说的一点是,如果你真的要在INNODB上更换主键,先删除老的主键,后创建新的主键是一种不可取的操作,因为删除老主键的时候,主键索引被删除,GEN_CLUSTER_INDEX会被创建,所有的二级索引会被重建。另外一点是选择主键的时候,尽可能选择增长趋势的字段作为主键(比如自增字段),因为innodb的行是按照主键的顺序插入的,采用自增的主键,有助于减少大量数据插入时的碎片产生,避免不必要的PAGE分裂,从而提高高并发插入的性能。当然你的数据库的负载没有那么大的时候,这些也不会成为一个主要的问题。原创 2024-02-01 15:03:35 · 680 阅读 · 0 评论 -
Mysql的ut_delay问题分析
因为自旋时该线程需要持有CPU的串行锁,因此,对于具有多个线程(比如至强芯片是双线程的)的CPU来说,这种长时间自旋而无法获得SPINLOCK的情况会导致另外一个CPU线程也被锁死,无法执行。可以看出,这两个参数都是用的缺省值,一般情况下,也不要轻易去调整这个参数,因为调整的不合适,可能会导致更为严重的性能问题。从这方面来看,spinlock的优化不是那么简单的事情,与服务器的配置,CPU型号以及应用的类型都有关系。这说明在这种高并发的场景下,调整达梦数据库的spin_time参数,也是有效的。原创 2024-02-01 15:02:01 · 839 阅读 · 0 评论 -
聊聊MYSQL-BLOCKED NESTED LOOP
这个算法说起来也十分简单,首先还是要选择一张较小的外表O,扫描O的记录,批量取出连接关键字的值,放入一个内存缓冲区中去,当缓冲区写满后,将这一批键值交给扫描引擎,去扫描内表I,从而完成连接操作。除了一些无法使用Hash Join的场景,有一些可以使用Hash Join的场景中,BNLJ也有可能有更好的效果。如果在I上没有合适的索引,那么如果O上的符合条件的记录有Bo个缓冲区,那么I表需要被扫描Bo次,如果每个BUFFER可以存储10个键值,那么扫描I表的次数可以减少为1/10,从而大大减少扫描的次数。原创 2024-02-01 11:39:57 · 1304 阅读 · 0 评论