随笔分类 -  06-数据库技术

摘要:对于目前的应用来说,一般很少使用单机MySQL服务,都会采用主从复制或集群方式,那么如何搭建呢? 1.集群 1.1概述 所谓集群,就是多台服务器之间共享数据,从而实现系统的高可用。节点之间的数据是实时同步的,采用的是同步复制机制。除了有多个主节点外,这些主节点还有多个从节点,当在主节点上进行写操作时 阅读全文
posted @ 2023-11-30 20:56 钟小嘿 阅读(65) 评论(0) 推荐(0) 编辑
摘要:开发中会遇到这样的需求,用户登录系统后,若超过30分钟无操作,则强制用户退出。也就是说登录后,若30分钟内进行了操作则无需退出用户,若超过30分钟不进行操作,则强制把用户退出,这里主要说明涉及缓存方面的问题,至于如何通知前端退出用户在此略。但有没有想过如下问题?如果直接设置登录后token的过期时间 阅读全文
posted @ 2022-10-18 16:00 钟小嘿 阅读(1916) 评论(0) 推荐(0) 编辑
摘要:在项目中经常会遇到树形结构的数据,如何去根据需要去查询也显得尤为重要。 其中表结构如下: CREATE TABLE `s_region` ( `region_code` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT 阅读全文
posted @ 2022-10-14 15:42 钟小嘿 阅读(7026) 评论(0) 推荐(0) 编辑
摘要:1.前言 Redisson是Redis官方推荐的Java版的Redis客户端。底层使用netty框架,并提供了与java对象相对应的分布式对象、分布式集合、分布式锁和同步器、分布式服务等一系列的Redisson的分布式对象。 2.使用准备 1)导入依赖 <dependency> <groupId>o 阅读全文
posted @ 2022-06-26 16:58 钟小嘿 阅读(2334) 评论(0) 推荐(0) 编辑
摘要:在使用redis作为缓存时,为提供查询数据和效率,优化也是必不可少的。 1.强化开发规范 1)不使用bigkey:即key对应的value的值不能太大。对于String类型,value超过10KB即为bigkey;对于非字符串类型,其元素超过5000个即为bigkey。 2)key命名优化:所有的k 阅读全文
posted @ 2022-06-24 10:56 钟小嘿 阅读(334) 评论(0) 推荐(0) 编辑
摘要:1.前言 redis作为一种非关系性数据库,常用来做缓存,不妨来了解下其key的过期策略。 过期字典:reids将所有过期的键值都放在一个字典中,而这个字典就叫做过期字典。 键空间:服务器中的每个数据库都由一个redis.h/redisDb结构表示,其中redisDb结构的dict字典保存了数据库中 阅读全文
posted @ 2022-06-22 17:05 钟小嘿 阅读(463) 评论(0) 推荐(0) 编辑
摘要:1.存储结构 对于下文中key使用:进行分隔,其实是一种分目录的方式,使用冒号分隔,形成目录。如article:readcount:223的目录如下图(使用Another Redis): 通过分目录,一目了然有分类,相同的分类则归纳在同一个目录下,而不至于看的是所有的key,找起来就特别麻烦。 2. 阅读全文
posted @ 2022-05-18 21:35 钟小嘿 阅读(376) 评论(0) 推荐(0) 编辑
摘要:1.判断数据库是否存在 select 1 from information_schema.schemata where schema_name='数据库名'; 指定数据库名查询是否存在,若存在则返回1,若不存在测返回空。 2.判断表是否存在 select 1 from information_sch 阅读全文
posted @ 2022-03-28 19:47 钟小嘿 阅读(2994) 评论(0) 推荐(0) 编辑
摘要:在MySQL常用的场景中,会使用datetime和timestamp两种方式记录数据的时间,一般会精确到秒,主要用于记录每个表中数据的创建时间、修改时间等,甚至在设计表时,根据设计规范,会对每张表都添加一个时间的属性来记录数据的创建时间,也有可能再添加一个属性来记录数据的修改时间。那么下面的介绍会使 阅读全文
posted @ 2022-03-20 09:39 钟小嘿 阅读(638) 评论(0) 推荐(0) 编辑
摘要:MySQL截取字符串的方式有以下几种: 1.left(str, length) 从左边开始截取指定长度字符串。 mysql> select left('abcd4528',3); + + | left('abcd4528',3) | + + | abc | + + 1 row in set (0.0 阅读全文
posted @ 2022-01-06 20:16 钟小嘿 阅读(11737) 评论(0) 推荐(0) 编辑
摘要:1.使用count() 当需要查询数据是否存在时,一般会使用count函数,统计其个数,用法如下: select count(1) from user where a = 1 在java中判断数量是否大于0即可: int num = userDao.countUser(params); if ( n 阅读全文
posted @ 2021-11-13 18:30 钟小嘿 阅读(712) 评论(0) 推荐(0) 编辑
摘要:MySQL中表的克隆有多种,常用的是create table as和create table like,两者有所差别。 ① reate table as 只能部分克隆表结构,但完整保留数据 ② create table like会完整地克隆表结构,但不会插入数据,需要单独使用insert into或 阅读全文
posted @ 2021-10-14 19:01 钟小嘿 阅读(2939) 评论(0) 推荐(0) 编辑
摘要:表结构相同,分表后如何查询所有表的数据?可以使用union关键字 select * from table1 where type=1 union select * from table1 where type=1 union select * from table3 where type=1 uni 阅读全文
posted @ 2021-08-26 08:54 钟小嘿 阅读(3753) 评论(2) 推荐(0) 编辑
摘要:在MySQL存储过程中若需要把执行的结果保存在变量中,可以使用into关键字。但使用普通语句和预处理语句的保存方式不一样。 1)普通语句 create procedure proc_var02() begin declare create_time datetime; select now() in 阅读全文
posted @ 2021-08-25 19:18 钟小嘿 阅读(1252) 评论(0) 推荐(1) 编辑
摘要:MySQL默认不支持表名作为变量名。 1)案例说明 若有一下存储过程: drop procedure if exists selectByTableName; create procedure selectByTableName(in tableName varchar(50)) begin sel 阅读全文
posted @ 2021-08-24 09:59 钟小嘿 阅读(4875) 评论(0) 推荐(2) 编辑
摘要:在java中有两种方式调用MySQL的存储过程,下面分别介绍: 1.环境准备 首先创建一个存储过程: create procedure p_test(in count int,out rs varchar(1000)) begin declare curr int default 1; declar 阅读全文
posted @ 2021-08-23 19:00 钟小嘿 阅读(1717) 评论(0) 推荐(1) 编辑
摘要:1.引言 存储过程是数据库的一个重要对象,可以封装SQL,完成一些复杂的业务逻辑。使用存储过程,最主要的特点是执行速度快,其经过编译后会比一条一条单独执行快,也能避免频繁的连接而消耗资源。 2.语法结构 2.1创建的语法结构 语法结构如下: create [definer = user] proce 阅读全文
posted @ 2021-08-22 10:36 钟小嘿 阅读(344) 评论(0) 推荐(0) 编辑
摘要:不知是什么原因,在对MySQL数据库的某一个表进行更新时,出现了异常"Lock wait timeout exceeded; try restarting transaction"。原因是这个表被锁住了。 解决办法当然是给这个表解锁了: 1)查询当前运行的所有事务 select * from inf 阅读全文
posted @ 2021-07-13 19:32 钟小嘿 阅读(296) 评论(0) 推荐(0) 编辑
摘要:前言:获取当前时间的方法: select sysdate from dual; 1.今天的数据 select * from user where TO_CHAR(create_time,'yyyy-MM-dd') = TO_CHAR(sysdate,'yyyy-MM-dd'); 2.昨天的数据 se 阅读全文
posted @ 2021-06-09 16:40 钟小嘿 阅读(7862) 评论(0) 推荐(3) 编辑
摘要:对于MySQL而言,它有自己的函数来查询时间和日期,查询今天的数据也有相应的做法。 数据库结构如下,进行说明: CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_name` varchar(45) COLLATE 阅读全文
posted @ 2021-06-02 11:48 钟小嘿 阅读(9175) 评论(0) 推荐(1) 编辑