mysql
文章平均质量分 90
菠萝y
发上等愿,结中等缘,享下等福;择高处立,寻平处住,向宽处行。
展开
-
树状结构数据的数据库表设计及使用 - 5. 四种模型的性能比较与分析
本文以 MySQL 为例。文档比较长,故分为5部分发出:附:树状结构数据的数据库表设计及使用 - 1. 邻接表树状结构数据的数据库表设计及使用 - 2. 路径枚举(Path Enumeration)模型树状结构数据的数据库表设计及使用 - 3. 闭包表(Closure Table)模型树状结构数据的数据库表设计及使用 - 4. 嵌套集(Nested Set)模型这里比较一下不同模型类似数据量(大概600多条)下的性能。这里除了闭包表的关联表都未加索引。可以看到嵌套集的查询速度对比邻接表是数量级上转载 2022-06-22 14:59:40 · 1075 阅读 · 0 评论 -
树状结构数据的数据库表设计及使用 - 4. 嵌套集(Nested Set)模型
本文以 MySQL 为例。文档比较长,故分为5部分发出:嵌套集模型嵌套集(Nested Set)模型的算法也叫做预排序遍历树算法 MPTT(Modified Preorder Tree Taversal)。在嵌套集的表里我们会有 lft和 rgt 两个字段,分别用来记录遍历整个集合或整棵树时,一个节点的左右边到根节点左边的距离。如果我们用集合的图来看的话,根节点左边初始为1,那么从左向右划过所有子集,碰到集合边缘时计数加1,各个子集(即节点)的左右边的数就一目了然的出来了。换成用树形结构展示,那转载 2022-06-22 14:42:51 · 2362 阅读 · 2 评论 -
树状结构数据的数据库表设计及使用 - 3. 闭包表(Closure Table)模型
本文以 MySQL 为例。文档比较长,故分为5部分发出:闭包表模型闭包表(Closure Table)是一种通过空间换时间的模型,它是用一个专门的关系表(其实这也是我们推荐的归一化方式)来记录树上节点之间的层级关系以及距离。为了防止插入数据出错,我们需要一个存储过程:然后我们插入一些数据,这里以在论坛里发帖回帖为例:前面的存储过程会在关系表里插入每条贴子与自身和它上级贴子的关系以及距离:获取闭包表全树或子树通过关联表的父子关系,去掉自指的记录,使用内连接获取所有子节点。叶节点的特征是没有转载 2022-06-22 14:25:33 · 5358 阅读 · 0 评论 -
树状结构数据的数据库表设计及使用 - 2. 路径枚举(Path Enumeration)模型
本文以 MySQL 为例。文档比较长,故分为5部分发出:路径枚举模型路径枚举(Path Enumeration)模型通过一个字符串字段记录保存从根节点到本节点经过的所有节点枚举。创建一个表,为了方便就把人员信息和路径信息放在一起了。路径枚举模型的特点是通过将所有祖先的信息联合成一个字符串,并保存为每个节点的一个属性。字符串的构建根据喜好或需要。上面的 path_string 也可以写成 ‘A/C/E’ 或 ‘A_C_E’ 这样的。emp_id 也可以是数字,例如 ‘1/3/5’ 。路径枚举模型的问题与转载 2022-06-22 11:54:24 · 2087 阅读 · 0 评论 -
树状结构数据的数据库表设计及使用 - 1. 邻接表
树状结构或层次结构的数据在企业应用里非常常见,例如公司的组织架构、文档库的目录结构、仓库的库位组织以及物件的分类等等。通常的树状图是一种数据结构。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。在设计树状结构的数据库表的时候,大部分开发者会下意识的选择邻转载 2022-06-22 11:41:11 · 6486 阅读 · 0 评论 -
Mysql事物锁等待超时 Lock wait timeout exceeded; try restarting transaction
错误信息:2020-08-13 14:13:04.179 ERROR 393116 --- [nio-9099-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.spring原创 2020-08-13 15:28:52 · 1129 阅读 · 0 评论 -
解决MySQL8.0和java8时区的问题
问题描述java将当前时间保存到MySQL数据库时,MySQL中的时间不正确。java中打印的时间是 2020-04-24 02:00:00,linux系统打印的时间也是2020-04-24 02:00:00,但是进入MySQL之后的时间不正确,变为了其他值。问题分析**原因一:**java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTCurl: jd...转载 2020-04-24 15:31:22 · 1831 阅读 · 0 评论 -
查询MySQL数据库中表结构的几种方法
mySQL:方法一、二、三:是在本数据库中查询。/**方法一**/show columns from activity_station;/**方法二**/desc activity_station;describe activity_station;/**方法三**/show create table activity_station;方法四是在统计数据库中查询。...原创 2019-07-15 16:05:34 · 1087 阅读 · 0 评论 -
数据库连接地址导致的错误
连接数据库地址后面加上?autoReconnect=true&useUnicode=true&characterEncoding=utf8 的作用是:*添加的作用是:指定字符的编码、解码格式。例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作...原创 2019-06-26 14:40:22 · 954 阅读 · 0 评论 -
spring 事务-使用@Transactional 注解(事务隔离级别)
先看下@Transactional可以配制那些参数及以其所代表的意义。isolation枚举org.springframework.transaction.annotation.Isolation的值事务隔离级别noRollbackForClass<? extends Throwable>[]一组异常类,遇到时不回滚。默认为{}noRollbackForClassName...转载 2018-12-15 01:39:19 · 5851 阅读 · 0 评论 -
关于分库分表,这有一套大而全的轻量级架构设计思路
原来文章地址:https://www.toutiao.com/a6545626478447428103/?tt_from=weixin&utm_campaign=client_share&article_category=stock&timestamp=1524029012&app=news_article&utm_source=weixin&iid...转载 2018-04-18 17:51:28 · 5231 阅读 · 0 评论 -
Linux平台下启动和关闭mysql服务
一、linux下查看mysql服务的两种方式:方式一:[root@localhost bin]ps -ef|grep mysql1方式二:[root@localhost bin]netstat -nlp1二、linux下启动mysql服务的两种方式:命令行方式:[root@localhost bin]cd /usr/bin [root@localhost ...转载 2018-03-13 10:11:43 · 910 阅读 · 0 评论 -
mybatis和JPA实现乐观锁解决并发问题-阿里巴巴JAVA开发手册详细解读
在阿里巴巴近期发出的阿里巴巴JAVA开发手册(终极版)中有这样一条记录。【强制】并发修改同一记录时,避免更新丢失,需要加锁。要么在应用层加锁,要么在缓存加锁,要么在数据库层使用乐观锁,使用version作为更新依据。 说明:如果每次访问冲突概率小于20%,推荐使用乐观锁,否则使用悲观锁。乐观锁的重试次数不得小于3次。那么什么是乐观锁呢?乐观锁( Optimist原创 2017-09-29 10:32:04 · 3253 阅读 · 1 评论 -
MySQL 性能优化的最佳 20+ 条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1.转载 2016-12-07 11:35:22 · 195 阅读 · 0 评论 -
数据库事务的四大特性以及事务的隔离级别
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到转载 2017-03-10 17:20:11 · 195 阅读 · 0 评论 -
mybatis generator(基于maven、mysql)
使用maven插件和mybatis generator 生成mybatis需要的model、mapper-xml、mapper-interface.话不多说,直接上配置文件pom.xml 4.0.0 cn.test.my my-parent 0.0.1-SNAPSHOT my-dal原创 2017-03-15 15:04:55 · 1543 阅读 · 0 评论 -
MyBatis Generator 详解
<!-- 可以用于加载配置项或者配置文件,在整个配置文件中就可以使用${propertyKey}的方式来引用配置项 resource:配置资源加载地址,使用resource,MBG从classpath开始找,比如com/myproject/generatorConfig.properties url:配置资源加载地质,使用URL的方式,比如file:///C:/myfolder/generator转载 2017-03-15 15:15:12 · 950 阅读 · 0 评论 -
MyBatis Generator 配置详解
MyBatis Generator中文文档MyBatis Generator中文文档地址:http://mbg.cndocs.tk/该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。本文中所有节点的链接都是对应的中文文档地址,可以点击查看详细信息。转载 2017-03-15 15:17:33 · 785 阅读 · 0 评论 -
Mybatis 实现物理分页的简单实现
分页查询:首先我们要明确什么是分页?为什么要去分页?分页就是将数据以多页去展示,使用分页可以提高客户的感受。 分页的分类:1.物理分页:只从数据库中查询当前页的数据优点:不占用很多内存 缺点:效率比价低(相比于逻辑分页)2.逻辑分页:从数据库将所有记录查询出来,存储到内存中,展示当前页,然后数据再直接从内存中获取优点:效率高 缺点:占用转载 2017-03-15 18:26:35 · 776 阅读 · 0 评论 -
完整的Mybatis分页解决方案
Mybatis 的物理分页是应用中的一个难点,特别是配合检索和排序功能叠加时更是如此。我在最近的项目中开发了这个通用分页器,过程中参考了站内不少好文章,新年第一天,特此发文回馈网站。特别鸣谢 paginator项目 (https://github.com/miemiedev/mybatis-paginator ) ,阅读源码帮助很大。 【背景】项目框架是 SpringMVC+M转载 2017-03-15 18:29:16 · 1674 阅读 · 0 评论 -
mysql索引类型Normal,Unique,Full Text区别及索引方法Btree,Hash的区别
问题1:mysql索引类型Normal,Unique,Full Text区别Normal:表示普通索引,大多数情况下都可以使用Unique:约束唯一标识数据库表中的每一条记录,即在单表中不能用每条记录是唯一的(例如身份证就是唯一的),Unique和Primary Key约束均为列或列集合中提供了唯一性的保证,Primary Key是拥有自动定义的Unique约束,但是每个表中可以有原创 2017-09-07 17:28:03 · 664 阅读 · 0 评论 -
关于sql里left join的效率问题
随着数据量越来越大,网站访问的速度变的越来越慢,于是开始关注这速度慢的原因,下面是我对其中一条sql的分析过程。sql中包含以下信息:1、sql包含数据处理函数,比如nvl函数,case when函数等2、sql中包含inner join,left join等关联关系3、sql中有排序和分页下面是分析过程1、首先把排序去掉,速度确实很快,但没办法,排序是必须的,转载 2017-09-12 17:17:19 · 16112 阅读 · 1 评论 -
101个MySQL开源数据库调试和优化技巧
MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧。MySQL服务器硬件和操作系统调节:1. 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文转载 2016-12-07 11:32:29 · 413 阅读 · 0 评论