
数据库
文章平均质量分 64
闻道☞
学习是最好的修行
展开
-
order by和distinct导致结果显示顺序有问题
mysql SQL distinct和order by 冲突问题原创 2022-11-29 09:48:57 · 577 阅读 · 0 评论 -
Explain详解与索引最佳实践
Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中Explain分析示例1示例表:2DROP TABLE IF EXISTS `actor`;3CREATE TABLE `actor` (4`id` int(11)原创 2021-10-08 15:28:05 · 222 阅读 · 0 评论 -
mysql 联合索引生效的条件、索引失效的条件
1.联合索引失效的条件联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似...转载 2020-08-07 09:55:58 · 855 阅读 · 0 评论 -
分库分表架构实践
转载:https://mp.weixin.qq.com/s/NszsDSp1pLH3wUqG-bbuYA1题记“分库分表”是谈论数据库架构和优化时经常听到的关键词。那么对于这些业务量正在高速增长的公司,它有那么容易实践吗?在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务转载 2017-12-19 09:45:32 · 852 阅读 · 0 评论 -
redis持久化(六)
Redis 持久化:提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF.RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末原创 2016-12-25 20:13:20 · 739 阅读 · 0 评论 -
解析配置文件 redis.conf(五)
1.常见配置redis.conf介绍参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定 pi原创 2016-12-25 18:10:16 · 464 阅读 · 0 评论 -
Redis入门介绍(三)
1.Redis是什么Redis:REmote DIctionary Server(远程字典服务器),是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器Redis 与其他 key - value 缓存产品有以下三个特点:原创 2016-12-25 11:41:30 · 424 阅读 · 0 评论 -
NOSQL数据库基本知识(二)
1.NoSQL数据模型简介以一个电商客户、订单、订购、地址模型来对比下关系型数据库和非关系型数据库传统的关系型数据库设计,ER图(1:1/1:N/N:N,主外键等常见)nosql设计可以用BSON,BSON()是一种类json的一种二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象js原创 2016-12-24 22:07:06 · 1639 阅读 · 0 评论 -
NoSql入门和概述(一)
1. 互联网时代背景下大机遇,为什么用nosql1.1单机MySQL的美好年代在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。上述架构下,我们来看看数据存储的瓶颈是什么?1.数据量的总大小 一个机器放不下时2.数据的索引(B+ Tree)一个机器的内存放不下时3.访问量(读写混合)原创 2016-12-24 20:25:10 · 656 阅读 · 0 评论 -
58到家数据库30条军规解读
转载:https://mp.weixin.qq.com/s/Yjh_fPgrjuhhOZyVtRQ-SAhttp://mp.weixin.qq.com/s/oQstfRFuGOvUVnElRqS5aw军规适用场景:并发量大、数据量大的互联网业务军规:介绍内容解读:讲解原因,解读比军规更重要一、基础规范(1)必须使用InnoDB存储引擎。解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使...转载 2017-12-28 10:05:04 · 290 阅读 · 0 评论 -
Redis数据类型(四)
1.Redis的五大数据类型1.1 String(字符串)string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M常...原创 2016-12-25 16:09:21 · 583 阅读 · 0 评论 -
Redis的事务(七)
1.Redis的事务是什么可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞。Redis的事务能干什么-------一个队列中,一次性、顺序性、排他性的执行一系列命令。不具有原子性。2.常用命令http://redisdoc.com/transaction/index.htmlhttp原创 2016-12-26 14:39:15 · 330 阅读 · 0 评论 -
Redis的发布订阅(八)
redis常见数据类型操作命令--http://redisdoc.com/1.Redis的发布订阅进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。2.命令先订阅后发布后才能收到消息,1 可以一次性订阅多个,SUBSCRIBE c1 c2 c32 消息发布,PUBLISH c2 hello-redis===原创 2016-12-31 11:08:10 · 340 阅读 · 0 评论 -
Redis的主从复制(Master/Slave)(九)
Redis虽然有着卓越的性能,但我们仍然可以通过master/slave这种简单架构,进行读写分离,进一步挖掘redis的性能,提高系统的可用性。redis怎么进行主从复制呢?redis复制主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据r原创 2016-12-31 12:44:08 · 3213 阅读 · 0 评论 -
Jedis常用操作(十)
Jedis 是 Redis 官方首选的 Java 客户端开发包。1.测试连通性public class Demo01 { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("127.0.0.1",6379); //查看服务是否运行,打出p原创 2016-12-31 15:10:48 · 1208 阅读 · 0 评论 -
MySql把一个表的数据转到另一个表实战
MySql中把一个表的数据插入到另一个表中的实现代码1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表; insert into insertTest select * from insertTest2; 2.如果只希望导入指定字段,可以用这种方法: INSERT INTO 目标...原创 2018-01-15 16:19:13 · 8163 阅读 · 1 评论 -
mysql基础知识
1.什么是SQL(Structured Query Language) 结构查询语句2.SQL语言分类:2.1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件>2.2 数据操纵语言DML数据操纵语言DML主要有三种形式:1) 插入...原创 2017-12-09 22:05:04 · 526 阅读 · 0 评论 -
mongoDB简单的数据库创建,文档的增删改,常用命令(二)
常用命令> show dbs -- 查看数据库列表> use admin --创建admin数据库,如果存在admin数据库则使用admin数据库> db ---显示当前使用的数据库名称> db.getName() ---显示当前使用的数据库名称> db.dropDatabase() --删当前使用的数据库> db.repairDatabase...原创 2017-12-20 11:27:11 · 6145 阅读 · 0 评论 -
sql优化
1. 当只要一行数据时使用 LIMIT 1当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。在这种情况下,加上 LIMIT 1 可以增加性能。这样一样,MySQL数据库引擎会在找到一条数据后停止搜索,而不是继续往后查少下一条符合记录的数据。下面的示例,只是为了找一下是否有“中国”的用户,很明显,后面的会比前面的更有效率。(请注意,...原创 2017-12-17 20:05:41 · 268 阅读 · 0 评论 -
mysql数据库优化的一些经验
目录1.MySql 架构图2. 什么样的表才是符合3NF (范式)2. Sql语句优化2.1 show status2.2 如何去定位慢查询2.3 通过 explain 语句可以分析,mysql如何执行你的sql语句2.4 添加索引2.4.1.添加2.4.2 聚集索引与非聚集索引2.5 sql语句优化3.如何选择mysql的存储引擎5. 分...原创 2017-12-15 15:00:07 · 548 阅读 · 0 评论 -
SQL Having的用法
本文导读:having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 与 WHERE 和 SELECT 的交互方式类似。WHERE 搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。一、HAVING 子句在 SQL 中增加 HAVING 子句原因是,W转载 2016-11-02 18:48:56 · 60400 阅读 · 2 评论 -
redis 集群介绍就,安装详细步骤,和spring 整合
redis相关网站:官网: http://redis.io 中文网:http://www.redis.cn/ 文档:http://redisdoc.com/1.Redis集群介绍什么是Redis集群?Redis集群是一个实现分布式并且允许单点故障的Redis高级版本。Redis集群没有最重要或者说中心节点,这个版本最主要的一个目标是转载 2017-01-02 11:54:24 · 877 阅读 · 0 评论 -
在分布式数据库中CAP原理CAP+BASE
1.传统关系数据库的ACID关系型数据库遵循ACID规则事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:1、A (Atomicity) 原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。比如银行转账,从A账户转100元至B账户,分为两个原创 2016-12-25 10:42:35 · 632 阅读 · 0 评论 -
SQL语句对返回的结果集重名命
SELECT a.sidFROM ( SELECT b.sid FROM ecws_cms_news_type b WHERE b.sid = 38 ) a SELECT ppm. N转载 2016-12-27 10:09:57 · 2115 阅读 · 0 评论 -
oracle体系结构
oracle 数据库是一个逻辑概念,而不是物理概念上安装了oracle数据库管理系统的服务器,oracle数据库管理系统中的三个重要概念: 实例:指一组oracle后台进程以及在服务器中分配的共享内存区域。 数据库:由基于磁盘的数据文件,控制文件,日志文件,参数文件和归档日志文件等组成的物理文件集合。 数据库服务器是指管理原创 2016-10-30 10:00:29 · 342 阅读 · 0 评论 -
SQL优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null最好不要给数据库留NULL,尽可能的使用NOT NU原创 2017-04-28 16:54:08 · 414 阅读 · 0 评论 -
浅谈数据库中的触发器
触发器 其是一种特殊的存储过程。一般的存储过程是通过存储过程名直接调用,而触发器主要是 通过事件(增、删、改)进行触发而被执行的。其在表中数据发生变化时自动强制执行。 常见的触发器有两种:after(for)、instead of,用于insert、update、delete事件。 after(for) 表示执行代码后,执行触发器 instead of转载 2017-05-01 09:35:16 · 348 阅读 · 0 评论 -
浅谈数据库中的存储过程
一、存储过程与函数的区别: 1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2.对于存储过程来说可以返回参数(output),而函数只能返回值或者表对象。 3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 二、存储过程的优点:转载 2017-05-01 09:38:44 · 374 阅读 · 0 评论 -
嵌套事务的回滚
嵌套事务和事务保存点的错误处理对于嵌套事务。1.外部起事务,内部起事务,内外都有Try Catch内部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。外部出错:如果外部事物出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。注:如果内部的事务不起事务名称,内部如果出错,转载 2017-05-02 16:33:32 · 12299 阅读 · 0 评论 -
Oracle中ROWNUM伪列和ROWID伪列的用法与区别
原文:http://blog.youkuaiyun.com/yu102655/article/details/52370542 做过Oracle分页的人都知道由于Oracle中没有像MySQL中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两个伪列的用法与原理,同样还是以scott用户的emp表为例;一、ROWN...转载 2017-05-04 18:30:57 · 400 阅读 · 0 评论 -
mysql 和oracle分页查询
1.Mysql分页查询1.1 LIMITLIMIT关键字是MySQL中特有的。它与其他种类数据库SQL语言中的TOP关键字作用类似,前者放在整个SELECT语句的最后面,而后者则必须放在输出字段列表之前(紧跟SELECT关键字的后面)。MySQL的LIMIT关键字的“亮点”在于除了它可以确定显示记录的条数外,还可以确定显示记录的起始位置,这相对于其它关系数据库的TOP关键字只能确定显示最前面的若干...原创 2017-05-04 18:43:14 · 701 阅读 · 0 评论 -
事物问题
1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未提交事务) 2.Mary读取自己的工资 ,发现自己的工资变为了8000,欢天喜地! 3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000原创 2017-05-31 15:48:50 · 367 阅读 · 0 评论 -
数据库索引与约束
1、表属性 创建表的基本语法: create table 【if not exists】 表名 (字段列表 【,索引或约束列表】)【表选项列表】 其中,字段列表格式如下: 字段名 类型 【属性列表】, 字段名 类型 【属性列表】... 属性列表中各个属性之间用空格隔开。 常用的字段属性:auto_increment设置字段值自动增长,用于整数类型primary key设...原创 2017-12-17 18:49:32 · 3015 阅读 · 0 评论 -
利用触发器实现主键增长
利用触发器实现主键增长 drop table CAR1 cascade constraints;/*==============================================================*//* Table: CAR1原创 2016-06-29 13:53:16 · 337 阅读 · 0 评论