今天是中秋节放假前的最后一天,今天给大家带来假期前的最后一篇技术文,这也是我对MySQL使用UUID做主键与int数字做主键做的性能压测。
日期算是我们在日常开发中经常用到的数据类型,一般来说一张表都有 createTime 和 updateTime 字段,MySQL 中针对日期也提供了很多种不同的数据类型,如: datetime timestamp int 等等。甚至也有人直接将日期存为字符串的。 那么到底该用哪种类型来保存日期呢? 1. 字符串 在这些类型中,首先应该排除掉的就是字符串了,很多新手小伙伴爱用字符串存储日期,但实际上这并不是一个很好的方案。 使用字符串存储日期,第一个显而易见的问题就是无法使用 MySQL 中提供的日期函数,
MySQL Enterprise Monitor是MySQL官方提供的一款监控和管理MySQL数据库的工具。 其功能之一包括MySQL Query Analyzer工具,通过MySQL Query Analyzer可以帮助用户识别慢查询和瓶颈,监视在MySQL服务器上执行的SQL语句,并显示每个查询的详细信息、执行次数和执行时间等有关性能的详细信息。
IDC发布报告《中国金融行业分布式事务型数据库市场份额,2023:技术验证结束,迎接高速增长》:在金融整体市场和银行细分市场,腾讯云数据库TDSQL斩获“双料”第一!
点击上方蓝色字体,选择“设为星标” 回复”学习资料“获取学习宝典 来源:JAVA日知录 在日常数据库设计中,几乎每张业务表都带有一个日期列,用于记录每条记录产生和变更的时间。比如用户表会有一个日期列记录用户注册的时间、用户最后登录的时间。又比如,电商行业中的订单表(核心业务表)会有一个订单产生的时间列,当支付时间超过订单产生的时间,这个订单可能会被系统自动取消。 日期类型虽然常见,但在表结构设计中也容易犯错,比如很多开发同学都倾向使用整型存储日期类型,同时也会忽略不同日期类型对于性能可能存在的潜在影响。
最近在项目中用了UUID的方式生成主键,一开始只是想把这种UUID的方式生成主键记录下来,在查阅资料的过程中,又有了一些新的认识和思考。
重点关注 : Innodb_row_lock_time_avg 、Innodb_row_lock_waits 、Innodb_row_lock_time
springboot在spring的基础上进行了提升,主要是减少了spring里面一成不变的xml配置。
分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。
return sprintf("%.3f ms",($s1+$m1-$s0-$m0)*1000);
在分布式环境下,如何对某对象做唯一标识是个很常规的问题。本文讨论几种常见做法,供大家参考。
我有个办法,不过不是用LR,是用super-smack,如果只对数据库进行抗压力测试,应该管用。 Super-smack 现在是1.3版,源码下载地址如下: http://vegan.net/tony/supersmack/super-smack-1.3.tar.gz 以下是在linux下的安装及使用方法: Super smack是一个基准套件。Super-smack是它的一个脚本工具。 可以用来测试myisam和innodb 还有ndb。 安装:用root用户 ./configure—with-mysql=/usr/local/mysql5 Make Make install 使用:(复制到哪都行) cp –r /src/smacks /home 修改用户名、密码、数据库名(上下总共两个地方) 测试: # super-smack -d mysql select-key.smack 10 1000 或者 # super-smack -d mysql update-select.smack 10 1000 作者只提供了select-key.smack和update-select.smack这两个测试包。 执行: # super-smack -d mysql select-key.smack 10 1000 结果: Query Barrel Report for client smacker1 connect: max=156ms min=0ms avg= 21ms from 10 clients Query_type num_queries max_time min_time q_per_s select_index 20000 0 0 16299.96 这里10是连接客户的数目。每个客户有100次轮询。 这表示super-smack运行了10个客户,客户连接最长时间为156毫秒,最短的则没有延迟,平均时间是21毫秒。super-smack总共执行了20000此查询,每个查询所花时间都小于1毫秒。整个测试期间,服务器端平均每秒执行了16299.96次select_index型查询。 /////////修改用户名、密码、数据库名 #vi select-key.smack或者#vi update-select.smack 第一行下面 client "admin" { user "root"; host "localhost"; db "test"; pass ""; socket "/tmp/mysql.sock"; // this only applies to MySQL and is // ignored for PostgreSQL } // ensure the table exists and meets the conditions table "http_auth" 中间靠下: client "smacker1" { user "test"; // connect as this user pass ""; // use this password host "localhost"; // connect to this host db "test"; // switch to this database socket "/tmp/mysql.sock"; // this only applies to MySQL and is // ignored for PostgreSQL query_barrel "2 select_by_username"; // on each round, // run select_by_username query 2 times }
来源:juejin.im/post/5bcc2935f265da0ac66987c9
Seconds_behind_master是我们观察主从延迟的一个重要指标。但任何指标所能表示的精度都是有限的。例如用精度只能到秒的指标去衡量毫秒级的表现就会产生非常大的误差。如果再以此误差去分析问题,就会让思维走上弯路。例如用Seconds_behind_master去评估1s内的主从延迟就是一个典型的例子。
发起 jdbc 请求前,需要有 JDBC 连接配置,即先连上数据库,才能查询数据库
一天清晨,我被一个客户电话惊醒,客户异常焦急,寻问CDN能不能帮助他们解决“秒杀”的问题,他们昨天刚刚进行了“整点秒杀活动”,结果并发量过大,导致服务宕机,用户投诉。 为了理清思路,我问了对方三个问题
业务量小于500W或数据容量小于2G的时候单独一个mysql即可提供服务,再大点的时候就进行读写分离也可以应付过来。但当主从同步也扛不住的是就需要分表分库了,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。那么这个全局唯一ID就叫分布式ID。
当连接数据库失败次数过多时,MySQL 是否会限制登录呢?数据库服务端应该怎么应对暴力破解呢?本篇文章介绍下 MySQL 中的连接控制插件,一起来学习下此插件的作用。
MySQL8.0.18刚刚发布,它包含一个全新的功能EXPLAIN ANALYZE,用来分析和理解查询如何执行。
作者:程序员追风 链接:https://juejin.im/post/5dd15451e51d453b3d3d4329
启动项目后,访问页面127.0.0.1:8080/druid/index.html,就可以访问监控页面了,其中ip和端口号为项目的ip和端口号。
最近利用 MHA 做好 Mysql 读写分离后,时不时有用户反馈后台发布文章时,报程序“通用异常",经问题排查,里面涉及应用JDBC连接池参数及Mysql参数调整问题。
HikariCP是快速,简单,可靠和生产就绪的JDBC连接池。在Spring Boot 2.0版本中,默认数据库池技术已切换到HikariCP。
MySQL提供了一个连接控制插件,可以在用户连续尝试失败后增加服务器响应延迟,该功能提供了一种威慑,可以减缓针对MySQL用户帐户的暴力攻击。
Java 的知识面非常广,面试问的涉及也非常广泛,重点包括:Java 基础、Java 并发,JVM、MySQL、数据结构、算法、Spring、微服务、MQ 等等,涉及的知识点何其庞大,所以我们在复习的时候也往往无从下手,今天小编给大家带来一套 Java 面试题,题库非常全面,包括 Java 基础、Java 集合、JVM、Java 并发、Spring全家桶、Redis、MySQL、Dubbo、Netty、MQ 等等,包含 Java 后端知识点 2000 +
排序规则(Collation)是比较和排序字符串的一种规则,每个字符集都会有默认的排序规则,可以使用命令 SHOW CHARSET 来查看:
用户在做技术选型的过程中,总是会对一些数据指标比较关心,特别是在和竞品相比较的时候,更加需要一些有说服力的数据。基于MySQL开发的项目在迁移到TiDB的时候,使用DM同步数据是必不可少的一个环节,我在最近的一次POC中就碰到了这样一个需求,需要评估一个具体的延时时间参考值,因为用户在迁移前期的过渡阶段是把TiDB作为MySQL的从库,有些场景对这个延时很敏感,如果延时太大会直接影响业务。
在《HikariCP源码分析之初始化分析一》中,我们解析了 HikariCP 的两种初始化方式,其中提到了使用HikariConfig的方式:
其中:publicKey 为公钥 , password为加密后密码,privateKey为私钥
日期与时间是非常重要的信息,在我们的系统中,几乎所有的数据表都用得到。原因是客户需要知道数据的时间标签,从而进行数据查询、统计和处理。因此,日期与时间类型也是我们最常用到的类型之一,今天就来聊一聊日期与时间类型中的TIMESTAMP类型。
这么温柔可爱的面试官,应该不会为难我吧。嗯,应该是的,毕竟我这么帅气,面试可能就是走个过场。美女面试官是不是单身?毕竟程序员都不善交流,因为我也是单身,难道我的姻缘就在此注定。孩子的名字我都想好了。一冰!好名字。
今天遇到一个很神奇的现象,在数据库中,相同的执行计划,执行SQL所需要的时间相差很大,执行快的SQL瞬间出结果,执行慢的SQL要几十秒才出结果,一度让我怀疑是数据库抽风了,后面才发现是见识不足,又进入了知识空白区。
在以前的项目中,最常见的两种主键类型是自增Id和UUID,在比较这两种ID之前首先要搞明白一个问题,就是为什么主键有序比无序查询效率要快,因为自增Id和UUID之间最大的不同点就在于有序性。
① Agent 部署引导流程优化:新增体验 Demo,用户无需安装 Agent 即可体验产品能力
performance_schema 是 MySQL 数据库中的一个内置的系统数据库,最早从MySQL5.5版本产生,这个数据库主要用于收集和存储与数据库性能相关的统计信息和指标。
各类型都有具体的取值范围,超出或非法的其他值时,MySQL 会回退到 0。TIMESTAMP 类型是个例外,给它设置一个超出范围的值时,将保存上该类型允许的最大值。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151927.html原文链接:https://javaforall.cn
本文只整理MySQL的自增字段方案,Oracle和SQL Server的自增长方案就不介绍了。
上文(MySQL自我保护工具--pt-kill ) 提到用pt-kill工具来kill相关的会话,来达到保护数据库的目的,本文再通过修改数据库参数的方式达到阻断长时间运行的SQL的目的。
过去的项目开发中,我们常常选用的数据库是mysql,mysql以其体积小、速度快等优势,备受中小型项目的青睐。随着项目数据量的迅速增长,mysql已无法满足我们的项目需求,数据迁移迫在眉睫。经多方对比综合考虑,我们选择了tidb分布式数据库。但是数据迁移后我们遇到一个问题,之前mysql数据库中,我们采用的是自增id主键,可选用的tidb又对自增主键不是很友好,所以我们选用了另一种主键生成方式:Snowflake算法。
Unix时间戳(Unix timestamp),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。
使用 django 的 orm 建模型的时候,添加 DateTimeField 字段,发现存到数据库的日期时间格式是’2020-06-28 21:30:48.481516’ 我们一般习惯的格式是’2020-06-28 21:30:48’不带后面的6位数毫秒 参考stackoverflow链接:https://stackoverflow.com/questions/46539755/how-to-add-datetimefield-in-django-without-microsecond 环境:
一般情况下,我们在定义表模型的时候,会使用time.Time,但是会根据当前时间存储。返回给前端的时候做时区转换会比较复杂,所以一般用int64:
做国外的项目经常会遇到时区转换的问题,这里简单针对遇到的时区问题做个记录,也希望对大家有所帮助,少走弯路。(本文设计开发语言为java)
为什么需要分布式全局唯一ID以及分布式ID的业务需求?集群高并发情况下如何保证分布式唯一全局Id生成?
在分布式系统中,经常需要用到全局唯一ID发生器,标识需要存储的数据。我们需要什么样的ID生成器?
领取专属 10元无门槛券
手把手带您无忧上云