
数据库
MySql、Redis、Mongodb
Reverse train.
这个作者很懒,什么都没留下…
展开
-
MySQL数据类型优化
1.更小的通常更好。一般情况下,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。2.简单就好。简单数据类型的操作通常需要更少的CPU周期。例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂。这里有两个例子:一个是应该使用MySQL内建的类型而不是字符串来存储日期和时...原创 2020-03-14 14:03:53 · 200 阅读 · 0 评论 -
MySQL:存储引擎InnoDB简单介绍
在文件系统中,MySQL将每个数据库保存为数据目录下的一个子目录。创建表时,MySQL会在数据库子目录下创建一个和表同名的.frm文件保存表的定义。可以使用SHOW TABLE STATUS命令显示表的相关信息。InnoDB是MySQL默认的事务型引擎,也是最重要,使用最广泛的存储引擎。InnoDB的数据存储在表空间中,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成...原创 2020-03-13 18:20:01 · 269 阅读 · 0 评论 -
MySQL:多版本并发控制MVCC
MySQL的大多数事务型存储引擎实现的都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。MVCC的实现,是通过保存数据在某个时间点的快照来实现的。也就是说,不管需要执行多长时间,每个事务看到的数据都是一致的。根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的...原创 2020-03-12 15:38:50 · 126 阅读 · 0 评论 -
MySQL:事务
事务就是一组原子性的SQL查询,或者说一个独立的工作单元。事务内的语句,要么全部执行成功,要么全部执行失败。银行应用是解释事务必要性的一个经典例子。假设一个银行的数据库有两张表:支票表checking和储蓄表savings。现在要从某用户的支票账户转200美元到她的储蓄账户,那么需要三个步骤:1.检查支票账户余额高于200美元;2.从支票账户余额减去200美元;3.在储蓄账户余...原创 2020-03-12 15:04:48 · 236 阅读 · 0 评论 -
MySQL:并发控制(锁)
无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。在处理并发读或者写的时候,可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁通常被称为共享锁和排他锁,也叫读锁和写锁。读锁是共享的,或者说是相互不阻塞的。多个客户在同一时刻可以同时读取同一个资源而不互相干扰。写锁是排他的,也就是说一个写锁会阻塞其他的写锁和读锁,这是出于安全策略的考虑,只有这样才能...原创 2020-03-11 14:51:45 · 298 阅读 · 0 评论 -
MySQL:逻辑架构
最上层的服务并不是MySQL独有的,大多数基于网络的客户端/服务端的工具或者服务都有类似的架构。比如连接处理、授权认证等等。第二层架构,大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信...原创 2020-03-11 14:01:23 · 192 阅读 · 0 评论 -
MySQL数据类型
原创 2020-03-10 12:10:41 · 98 阅读 · 0 评论 -
数据库操作:安全管理
MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。这就是所谓的访问控制,管理访问控制需要创建和管理用户账号。为了执行数据库操作,需要登录MySQL,MySQL创建一个名为root的用户账号,它对整个MySQL服务器具有完全控制。MySQL用户账号和信息存储在名为mysql的MySQL数据...原创 2020-03-09 14:39:28 · 525 阅读 · 0 评论 -
数据库操作:事务处理
并非所有引擎都支持事务处理,MyISAM不支持,InnoDB支持。事务处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么都执行,要么都不执行。事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们或者作为整体执行,或者完全不执行。相关术语1.事务(transaction):指一组SQ...原创 2020-03-09 13:40:05 · 1035 阅读 · 0 评论 -
数据库操作:存储过程
使用的大多数SQL语句都是针对一个或多个表的单条语句,并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。可以创建存储过程。存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合(一组为了完成特定功能的SQL语句集)。存储过程简单、安全、高性能。MySQL执行存储过程的语句为CALL。CALL接受存储过程的名字以及需要传递给它的任意参数。CAL...原创 2020-03-08 18:01:33 · 338 阅读 · 0 评论 -
数据库操作:视图
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。SELECT cust_name,cust_contactFROM customers,orders,orderitemsWHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND pro...原创 2020-03-08 14:46:28 · 399 阅读 · 0 评论 -
数据库操作:数据过滤AND、OR、IN、NOT
SELECT prod_id,prod_price,prod_nameFROM productsWHERE vend_id=1003 AND prod_price<=10;此SQL语句检索由供应商1003制造且价格小于等于10的产品。AND 用来指示检索满足所有给定条件的行。SELECT prod_name,prod_priceFROM productsWHE...原创 2020-03-07 15:19:25 · 899 阅读 · 0 评论 -
数据库操作:排序检索数据ORDER BY
检索处的数据并不是以纯粹的随即顺序显示的。如果不排序,数据一般将以它在底层表中出现的顺序显示。为了明确地排序,可以使用ORDER BY子句。SELECT prod_nameFROM productsORDER BY prod_name;prod_name列将以字母顺序进行排序。通常ORDER BY子句中使用的列将是为显示所选择的列。但是实际上并不一定要这样,用非检索的列排序...原创 2020-03-06 15:21:21 · 450 阅读 · 0 评论 -
数据库操作:检索数据SELECT
SELECT用途是从一个或多个表中检索信息。检索单个列SELECT prod_nameFROM products;上述语句从products表中检索一个名为prod_name的列。所需的列名在SELECT关键字之后给出,FROM关键字指出从其中检索数据的表名。SQL语句不区分大小写,SELECT和select是相同的。检索多个列SELECT prod_id,pro...原创 2020-03-06 15:12:11 · 336 阅读 · 0 评论 -
数据库操作:组合查询UNION
可以用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。所需要做的只是给出每条SELECT语句,在各条语句之间放上关键字UNION。SELECT vend_id,prod_id,prod_priceFROM productsWHERE prod_price<=5UNIONSELECT vend_id,prod_id,...原创 2020-03-06 14:38:05 · 470 阅读 · 0 评论 -
数据库操作:创建高级联结
https://blog.youkuaiyun.com/xylyaya/article/details/104674541迄今为止,我们使用的只是称为内部联结或等值联结的简单联结。还有三种其他联结:自联结、自然联结、外部联结。自联结假如发现某物品(ID为DTNTR)存在问题,因此想知道生产该物品的供应商生产的其他物品是否也存在这些问题。此查询要求首先找到生产ID为DTNRT的物品的供应商...原创 2020-03-06 14:15:52 · 122 阅读 · 0 评论 -
数据库操作:创建计算字段
存储在数据库表中的数据一般不是应用程序所需要的格式。下面举几个例子。如果想要在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中。列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。需要根据表数据进行总数、平均数计算或其他计算。上述每个例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据。这就是计...原创 2020-03-05 16:29:43 · 768 阅读 · 0 评论 -
数据库操作:联结表join
假如有一个包含产品目录的数据库表,其中每种类别的物品占一行。对于每种物品要存储的信息包含产品描述和价格,以及生产该产品的供应商信息。现在,假如有由同一供应商生产的多种物品,那么在何处存储供应商信息(如供应商名、地址、联系方法等)呢?因为同一供应商生产的每个产品的供应商信息都是相同的,对每个产品重复此信息既浪费时间又浪费存储空间。如果供应商信息改变,只需改动一次即可。如果有重复数据,...原创 2020-03-05 15:29:30 · 271 阅读 · 0 评论 -
数据库操作:分组数据GROUP BY、HAVING
分组是在SELECT BY子句中建立的。SELECT vend_id,COUNT(*) AS num_prodsFROM productsGROUP BY vend_id;vend_id num_prods1001 31002 21003 7上面语句指定了两个列,vend_id包含产品供应商的id,num_prods为计算字段(产品数量)。GRO...原创 2020-03-04 14:18:38 · 359 阅读 · 0 评论 -
数据库操作:汇总数据(聚集函数)
我们经常需要汇总数据而不用把它们实际检索出来,为此MySQL提供了专门的函数。聚集函数运行在行组上,计算和返回单个值的函数。SQL聚集函数1.AVG():返回某列的平均值;2.COUNT():返回某列的行数;3.MAX():返回某列的最大值;4.MIN():返回某列的最小值;5.SUM():返回某列之和。SELECT AVG(prod_price) AS avg_...原创 2020-03-03 20:05:22 · 2158 阅读 · 0 评论 -
数据库操作:数据处理函数
与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数没有SQL的可移植性强。能运行在多个系统上的代码称为可移植的。多数SQL语句是可移植的,在SQL实现之间有差异,这些差异通常不那么难处理。而函数的可移植性却不强。文本处理函数常用的文本处理函数:1.Left():返回串左边的字符;2.Length():返回串的长度;3.Locate():找出串的一个子串;4....原创 2020-03-03 14:31:35 · 256 阅读 · 0 评论 -
数据库操作:通配符
通配符:用来匹配值的一部分的特殊字符。为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。搜索模式:由字面值、通配符或两者组合构成的搜索条件。百分号(%)通配符在搜索串中,%表示任何字符出现任意次数。例如:为了找出所有以词jet起头的产品,可以使用以下语句。SELECT prod_id,prod...原创 2020-03-03 10:28:34 · 7088 阅读 · 0 评论 -
数据库操作:创建表、操作表
一般有两种创建表的方法:1.使用具有交互式创建和管理表的工具;2.使用MySQL语句。使用Navicat工具创建表uu。使用MySQL语句创建表。利用CREATE TABLE创建表,必须给出下列消息:1.表的名字,在关键字CREATE TABLE之后给出;2.表列的名字和定义,用逗号分隔。CREATE TABLE customers(...原创 2020-03-02 12:25:48 · 894 阅读 · 0 评论 -
数据库操作:删除数据delete
从一个表中删除数据,使用DELETE语句。可以两种方式使用DELETE:从表中删除特定行;从表中删除所有行。DELETE FROM user where name='GAKKI'DELETE不需要列名或通配符,DELETE删除整行而不是删除列。DELETE删除的是表中的行,但是不能删除表本身。如果想从表中删除所有行,不要使用DELETE,可以使用TRUNCATE TABLE语...原创 2020-03-01 15:26:33 · 14292 阅读 · 0 评论 -
数据库操作:更新数据update
为了更新(修改)表中数据,可以使用UPDATE语句。可采用两种方式:更新表中特定行;更新表中所有行。UPDATE语句由三部分组成:要更新的表;列名和它们的新值;要更新行的过滤条件。UPDATE user SET name='AA' WHERE name='aa';UPDATE语句总是以要更新的表名开始,此例子中,要更新user表。SET用来将新值赋给被更新的...原创 2020-03-01 15:18:38 · 45844 阅读 · 1 评论 -
数据库操作:插入数据insert
INSERT是用来插入行到数据库表的,它要求指定表名和被插入到新行中的值。INSERT语句一般不会产生输出。插入可以用几种方式使用:1.插入完整的行;2.插入行的一部分;3.插入多行;4.插入某些查询的结果。举个简单例子:insert into users VALUES(DEFAULT,'gakki','123');各个列必须以它们在表定义中出现...原创 2020-03-01 14:55:42 · 56239 阅读 · 1 评论 -
数据库连接池简单介绍
• 传统连接方式首先调用Class.forName() 方法加载数据库驱动,然后调用DriverManager.getConnection() 方法建立连接。• 连接池技术连接池解决方案是在应用程序启动时就预先建立多个数据库连接对象,然后将连接对象保存到连接池中。当客户请求到来时 从池中取出一个连接对象为客户服务。当请求完成时客户程序调用 close() 方法将连接对象放回池中 。...原创 2020-01-01 19:07:39 · 157 阅读 · 0 评论 -
RedisTemplate
https://gitee.com/love_your_smile/profile_management.gitSpring提供的模板对象,实现对Redis数据库的操作,提供了对redis数据库的增删查改的功能,封装了Jedis。同时自身实现了:1.对象的序列化和反序列化功能,作为对象存储的默认方案。2.如果需要将对象转化为json字符串存储,需要覆盖默认方案。...原创 2020-01-01 13:50:58 · 121 阅读 · 0 评论 -
Redis集群的主从复制
3个master:在整个集群负责数据的写操作(添加,更新,删除)。3个slave:在整个集群中负载数据的读操作,slave会同步自己对于的master上的数据,完成数据读写分离,主从同步,同时做到高可用。当某个master宕机的时候,对应的slave自动提升为master参与集群工作。修改从服务对应的主服务地址(修改时可以在redis.comf搜索slaveof关键字)主从复制...原创 2020-01-01 13:51:08 · 136 阅读 · 0 评论 -
Redis缓存可能出现的问题
1.缓存穿透查询一条数据库不存在的数据,缓存中没有,就会来查询数据库,数据库也不存在,就不会将值保存在缓存中。如果一直访问这条数据,对数据库进行频繁的查询,会给数据库带来压力;解决方法:当查询的时候,如果缓存和数据库中都没有,就将这个数据以null的形式存放在缓存中,(设置较短的过期时间)这样就不用去数据库查询就可以知道数据不存在,减少对数据库查询的次数,当这个值发生改变的时候,再重新进行...原创 2020-01-01 13:51:22 · 288 阅读 · 0 评论 -
Redis数据持久化的简单介绍
Redis的数据持久化分为RDB和AOF。快照持久化(RDB)Redis的默认持久化方式。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。与快照持久化相比,AOF持久化的实时性更好。开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将...原创 2020-01-01 13:51:23 · 125 阅读 · 0 评论 -
Redis----缓存技术的实现
用户第一次请求,缓存中没有对应的数据,所以需要到数据库查询,查询的结果保存在缓存中,用户以后请求,直接从缓存中获取。用户获取的数据是经过service业务层处理的,而不是直接从数据库中获取到的数据,缓存的实现也需要在业务层进行。1.手动实现这里只给出最主要的地方代码。配置文件service业务层@Servicepublic class UserServiceImp...原创 2020-01-01 13:51:51 · 175 阅读 · 0 评论 -
Redis.conf的简单介绍
1. daemonizeredis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程。2.pidfile /var/run/redis.pid当redis以守护进程方式运行时,redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定。3.port指定redis监听端口,默认端口号为6379。4...原创 2019-12-31 11:32:10 · 251 阅读 · 1 评论 -
缓存技术的简单介绍
原创 2019-12-31 11:28:43 · 136 阅读 · 0 评论 -
Redis安装到Linux
https://gitee.com/love_your_smile/profile_management.git原创 2019-12-31 11:24:36 · 90 阅读 · 0 评论 -
Redis数据库的简单介绍
Redis是非关系型数据库:相对于关系型数据库,最大的特征没有表的概念,通过键值对保存数据。Resid常用五种数据类型:String,List,Hash,Set,SortedSet。支持数据的分布式存储,支持读写分离,主从同步,提高数据访问速度。Redis数据库中的数据在内存中保存,支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。redis的...原创 2019-12-31 11:19:38 · 290 阅读 · 0 评论