
[数据库]
文章平均质量分 95
Holmofy
奋斗中的小菜鸟
展开
-
分库分表的一些思考
分库分表这个技术在之前一家公司其实也有接触。上一家公司在业务上按照用户水平分库的,所以避免了很多业务上的问题,但也只是基于Spring的AbstractRoutingDataSource,根据userId做了简单的路由。之前也在网上听说过sharding-jdbc等中间件,也仅限于了解。所以结合我从内网看到的关于TDDL中间件的文章和外网看到的一些文章,在这篇文章中整理一下我这个新人对分库分表的认...原创 2020-04-27 21:47:55 · 959 阅读 · 2 评论 -
MySQL性能优化[理论篇]-聚簇索引和非聚簇索引,InnoDB和MyISAM
聚簇索引聚簇索引(Clustered Index)并不是一种新的数据结构,只是B树索引的一种存储方式。聚簇索引的特点是完整的数据行就放在B树的叶子结点中,Clustered(聚簇,集群)就表示数据行与对应的键紧凑的存储在一起。下图是《高性能MySQL》聚簇索引的截图,其中,叶子结点包含了数据行的完整数据,非叶子节点只包含索引列数据。数据行的逻辑顺序与聚簇索引的顺序一致。B+树中...原创 2018-05-27 01:49:45 · 1900 阅读 · 0 评论 -
MySQL性能优化[实践篇]-复合索引实例
上篇文章最后提了个问题假设某个表有一个复合索引(c1,c2,c3,c4),问以下查询中只能使用该复合索引的c1,c2,c3部分的有那些1. where c1=x and c2=x and c4>x and c3=x2. where c1=x and c2=x and c4=x order by c33. where c1=x and c4=x group by c3,c2...原创 2018-05-26 17:02:11 · 1444 阅读 · 0 评论 -
MySQL性能优化[实践篇]-索引合并与复合索引
从上一篇创建索引的实践中,我们看到了索引给我们带来的性能提升是非常可观的。我们上次创建的表结构非常简单,只有两三个字段,where子句查询条件只有一个字段。实际应用场景中我们的表结构会更复杂,查询条件也会非常多。在多条件查询的情况下又如何才能用到索引呢,我们可以测试一下。准备测试数据创建表结构create table tb_test(id int primary key...原创 2018-05-20 19:07:01 · 3059 阅读 · 0 评论 -
MySQL性能优化[实践篇]-使用B树索引
准备测试数据create table tb_user( id int auto_increment primary key, name varchar(10), birth date);使用存储过程创建测试数据,不过在这之前我们先创建两个工具函数。 mysql里面默认以;作为一条完整语句的终结符,为了不与函数和存储过程中的;冲突,我们要提前使用delimiter命...原创 2018-04-24 15:03:23 · 1012 阅读 · 0 评论 -
MySQL性能优化[理论篇]-B树索引与hash索引
对索引的优化是数据库性能优化方面最重要的一项,也是性能提升最显著的。如果把数据库比作一本新华字典,那索引就是字典前面的目录了。如果不使用目录,想从字典中直接找某个字的解释,难度可想而知,但是有了目录,我们可以先从目录中找到这个字对应的页码,然后再翻到相应的页码,就能找到这个字的完整解释了。索引的工作原理和字典目录基本一致。接下来的几篇文章我会细致的分析MySQL数据库中索引的原理以...原创 2018-04-20 00:19:34 · 1535 阅读 · 0 评论 -
B树与B+树
从二叉搜索树说起其实上一篇文章已经对BST进行过讨论,并对AVL,红黑树这样的自平衡二叉查找树分别解决了什么问题进行了讨论。上面这些数据结构理论上能达到O(log2N)O(log2N)O(log_2N)的平均时间复杂度。这个时间复杂度是基于对内存的操作而计算出来的。倘若我们的数据量十分庞大,内存无法容纳,我们不得不存储在硬盘中。这个时候二叉搜索树还能达到预期的速度吗?在回答这个...原创 2018-04-06 02:47:24 · 1516 阅读 · 0 评论 -
MySQL性能优化[准备篇]-单条SQL性能剖析
上面一篇文章已经将慢查询语句记录到日志中,接着我们就要对单条SQL查询进行性能分析,了解它慢在何处,才能对症下药进行性能优化。show profileshow profile命令是MySQL5.1之后引入的,由开源社区的Jeremy Cole贡献。1. 开启profilingprofiling系统变量是用来支持访问剖析信息的,profiling默认是关闭的,我们可以用set...原创 2018-03-10 00:22:15 · 468 阅读 · 0 评论 -
MySQL性能优化[准备篇]-慢查询日志
在MySQL5.0及之前的版本中,慢查询日志的响应时间单位是秒。显然对于互联网与电子商务如此发达的现在,“秒”级别的查询实在太慢了。在MySQL5.1及更新的版本中,慢查询日志的功能得到了增强,甚至可以通过设置long_query_time为0来捕获所有的查询。在MySQL的当前版本中,慢查询日志是开销最低、精度最高的测量查询时间的工具。我们完全不用担心开启慢查询日志会带来额外的I/O开销,这...原创 2018-03-10 00:15:52 · 1519 阅读 · 0 评论 -
远程连接Oracle的配置
前两天在CentOS7上装了Oracle,但每次都需要shell远程登录oracle用户才能在服务器上使用sqlplus进行数据库操作。感觉真尼玛麻烦,直接拿个Windows上的Oracle客户端连上去多爽,所以今天就折腾了一番,整理出来以防将来再走弯路。选择客户端我的本上客户端有很多,比如图形界面的有:Navicat Premium(能连Oracle,MySQL,SqlLite...原创 2017-08-30 18:50:32 · 9092 阅读 · 0 评论 -
Linux上安装Oracle的辛酸史
下个礼拜就要开始学习Oracle了,得嘞先在我的CentOS7上装一个(貌似听说Oracle装在Oracle Linux能得到更好的性能,不过懒得下Oracle Linux镜像,在CentOS7上装个试试先)。创建oracle用户与相关用户组为什么要把这部分作为第一步呢,主要是为了避免后面创建文件以及解压缩等一系列步骤中,要将文件所有者修改为oracle才能在安装过程中有足够的权限创建...原创 2017-08-27 19:06:14 · 50162 阅读 · 20 评论 -
在CentOS7上安装MySQL的辛路历程
今天突然心血来潮,想把博客转移到到自己的云服务器上,嗯,想法不错,正好能练练手(后来找到了别的解决方案Hexo,才发现自己有多幼稚,果然是脑子一热,啥事想得出来,但是在这个过程中也学到了一些东西)。CentOS上安装MySQL数据库,linux配mysql,哎哟,不错哦。(→_→在找到别的解决方案后,马上就被我给卸了)。二话不说上yum安装大法[root@VM_235_40_cento...原创 2017-04-05 22:23:29 · 18127 阅读 · 0 评论 -
LocalDB的使用详解
LocalDB是什么我们知道微软有一个SQL Server的免费版本SQL Server Express,它是作为学习以及构建桌面或小型服务器应用的入门级的免费数据库。但是作为编程人员,还是觉得体积过大。所以微软为开发者量身定制了一款专门用于编程开发的小数据库SQL Server Express LocalDB(实际上就是从SQL Server Express中抽离出来的)。下载和安装...原创 2017-09-09 21:15:21 · 12754 阅读 · 1 评论 -
事务的隔离级别
转载自:http://xm-king.iteye.com/blog/770721SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 1. Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应转载 2017-10-17 18:51:59 · 684 阅读 · 0 评论