数据库学习
okiwilldoit
这个作者很懒,什么都没留下…
展开
-
Redis Sentinel学习和集群
一.介绍Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。 它的主要功能有以下几点: ...原创 2018-09-05 15:47:49 · 244 阅读 · 0 评论 -
Redis主从同步原理
在redis中为了保证redis的高可用,一般会搭建集群模式,其中一种就是主从模式,还有一种是集群模式。主从模式可以保证redis的高可用,那么redis是怎么保证主从服务器的数据一致性的,接下来我们谈谈redis主(master)从(slave)同步原理。1. PSYNC命令要想了解redis的主从同步原理,首先要了解下psync命令。Redis在2.8版本提供了PSYNC命令来带代替SYNC命令,为Redis主从复制提供了部分复制的能力。PSYNC命令格式是:PSYNC <runid>原创 2020-09-11 10:09:47 · 478 阅读 · 0 评论 -
Alchemy-Database入门
Alchemy Database 是一个低延迟、高 TPS 的 SQL 数据库,构建在 NoSQL 服务器 Redis 之上。通过深度嵌入 Lua 语言提供数据存储端的脚本开发。支持非结构化的数据存储,性能非常之强悍。 在一个单核的3G CPU 使用 PC3200 (400MHZ) 的机器上的测试结果: ● 95K INSERT/sec, 95K SELECT/sec, 90K UPDATE原创 2016-06-30 15:48:49 · 1331 阅读 · 0 评论 -
MySQL索引基础
MySQL的索引有很多类型,索引是在存储引擎层而不是服务层实现的,不同存储引擎的索引实现方式可能是不一样的。 MySQL支持的索引类型主要有:B-Tree索引,哈希索引,全文索引等。一. B-Tree索引当谈论索引的时候,如果没有特别指明类型,那多半说的就是B-Tree索引。底层的存储引擎可能使用不同的存储结构来实现该索引,如InnoDB用的B+树来实现的。 B-Tree索引意味着所有值都是按顺原创 2016-06-15 15:03:14 · 433 阅读 · 0 评论 -
MySQL存储引擎中的MyISAM和InnoDB区别
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM。InnoDB,是M转载 2016-06-15 11:15:43 · 301 阅读 · 0 评论 -
数据库死锁
最近做项目时,将原先单条插入更新数据库时改为批量插入更新。这样做的好处是降低了QPS(sql语句的数量),但是同时也带来一个问题,DB的行锁急剧增加。由于批量更新执行时间长,导致资源被长时间锁定,从而导致了大量的死锁产生,即出现以下错误信息:Deadlock found when trying to get lock; try restarting transaction借这个机会,研原创 2016-07-07 15:38:13 · 2009 阅读 · 0 评论 -
MySQL常用SQL语句
从数据库导出sql文件1.将数据库mydb导出到e:\mysql\mydb.sql文件中:打开开始->运行->输入cmd 进入命令行模式c:\>mysqldump -h localhost -u root -p mydb >e:\mysql\mydb.sql然后输入密码,等待一会导出就成功了,可以到目标文件中检查是否成功。2.将数据库mydb中的mytable导出到e:\mys原创 2013-02-25 18:52:33 · 427 阅读 · 0 评论 -
分组查询最大/最小值sql
经典题目:查询每个班级的最高分,查询每种日志的最晚记录 1.查询每个班级的最高分(不考虑同一分数的) SQL语句: SELECT id,name,calssid,MAX(score) FROM (SELECT * FROM t_zhb ORDER BY score desc) A GROUP BY calssid; 查询结果: 必须要有子查询,子查询先要排序,如果取最大,倒序排,原创 2016-11-09 15:02:33 · 7685 阅读 · 0 评论 -
Department Top Three Salaries
表内自连接,得到rank前三的记录 https://leetcode.com/problems/department-top-three-salaries/SELECT D.Name AS Department,A.Employee,A.Salary FROM(SELECT C.DepartmentId,C.Name AS Employee,C.Salary FROM(SELECT E1.id原创 2016-03-22 14:42:07 · 298 阅读 · 0 评论 -
Redis持久化操作
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。 Redis 主要提供了两种不同的持久化方式:RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,也被称为快照方式(snapshot)。AOF(Append-only file) 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。简而言之,R原创 2017-10-20 11:54:14 · 611 阅读 · 0 评论 -
数据库基础知识
一. 数据库范式目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。 1NF:原子属性。每一列属性都是不可再分的属性值,确保每一列的原子性2NF:在满足1NF基础上,依赖主键。所有非主属性都完全依赖于每一个候选关键属性。3NF:在满足2NF基础上,非主属性不依赖于其它非主属性,在2N原创 2017-10-12 16:03:09 · 268 阅读 · 0 评论 -
sql注入攻击
SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。我们来看一原创 2015-09-24 17:04:11 · 592 阅读 · 0 评论 -
couchbase安装和配置
一.Couchbase介绍Couchbase,是MemBase与couchDb这两个NoSQL数据库的合并的产物,是一个分布式的面向文档的NoSQL数据库管理系统,即拥有CouchDB的简单和可靠以及Memcached的高性能。它内置了Memcached的所有服务,可以说是Memcached的升级版,分布式版本。Couchbase是高性能,高伸缩性和高可用的分布式缓存系统。二.与Red...原创 2018-08-31 11:16:28 · 6484 阅读 · 0 评论 -
mysql多行记录合并为一行
t_zhb表结构如下:task_id type item_id cnt1 2 1 2002 2 1 4001 2 2 5002 2 2 300现在想要把type和item_id都相同的记录合并为一行,合并后如下所示:type item_id cnt2 1 200,4002 2 500,300用...原创 2018-11-15 18:17:56 · 405 阅读 · 0 评论 -
influxDB介绍
InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手。InfluxDB关键概念:database,measurement(类似sql中的table),fiel...原创 2019-04-08 18:28:52 · 2331 阅读 · 0 评论 -
Rank Scores
https://leetcode.com/problems/rank-scores/解法一考察的也是表内自连接,排序SELECT * FROM (SELECT B.Score,COUNT(1) AS Rank FROM (SELECT DISTINCT Score FROM Scores) AINNER JOIN Scores BWHERE B.Score<=A.Score GROUP BY原创 2016-03-22 14:31:28 · 396 阅读 · 0 评论 -
Rising Temperature
表内自连接,TO_DAYS函数的使用 https://leetcode.com/problems/rising-temperature/SELECT w1.Id FROM Weather w1 INNER JOIN Weather w2 ON TO_DAYS(w1.Date) = TO_DAYS(w2.Date) + 1 AND w1.Temperature > w2.Temperature原创 2016-03-22 14:49:56 · 436 阅读 · 0 评论 -
Delete Duplicate Emails
表内自连接,注意连接条件,以及delete对象(语法有些别扭) https://leetcode.com/problems/delete-duplicate-emails/DELETE p1 FROM Person p1 INNER JOIN Person p2ON p1.Email = p2.Email AND p1.Id > p2.Id;原创 2016-03-22 14:45:19 · 397 阅读 · 0 评论 -
HANA数据存储方式及其他介绍
hana支持h原创 2014-07-23 17:29:02 · 6483 阅读 · 0 评论 -
HANA XS介绍
HANA XS是内嵌在HANA内的服务器端应用,它的核心部分是XS引擎,XS的编程语言是js。HANA XS建立app是基于http协议的,它可以提供以下服务:1. 通过http的方式来访问HANA数据库。2. 支持动态的HTML5应用,它也有sap UI5这样的视图层解决方案。3. 强大的搜索服务,比如fuzzy search和text analysis。4. 分布式的代码管原创 2014-07-25 10:36:09 · 3573 阅读 · 0 评论 -
HANA Text Analysis中的分词功能
SAP HANA分词属于SAP HANA文本分析的一部分。我们可以通过创建全文索引的方式来实现SAPHANA分词功能。SAP HANA文本分析支持以下7种数据类型:TEXT, BINTEXT, NVARCHAR, VARCHAR, NCLOB, CLOB,and BLOB。你可以根据不同的应用需求选择不同的数据类型。为了使用SAP HANA 实现中文分词,我们首先确认你安装的SAP HANA中原创 2014-07-28 10:51:48 · 1741 阅读 · 0 评论 -
HANA Fuzzy Search
Fuzzy Search是HANA提供的模糊搜索功能,传统的sql语句只提供了like关键字的原创 2014-07-25 10:42:25 · 1832 阅读 · 0 评论 -
window function
window function是用来避免self join.原创 2014-09-10 12:46:23 · 595 阅读 · 0 评论 -
Java操作redis
jedis是Redis的Java客户端,用它可以很方便地操作redis。需要引入的jar包有jedis和common-pool2,用Maven来引入: redis.clients jedis 2.8.0 org.apache.commons commons-pool2 2.原创 2016-02-19 15:01:06 · 372 阅读 · 0 评论 -
Combine Two Tables
考察两表join的用法SELECT P.FirstName,P.LastName,A.City,A.State FROM Person PLEFT JOIN Address AON P.PersonId=A.PersonId原创 2016-03-22 12:14:05 · 363 阅读 · 0 评论 -
Second Highest Salary
用limit实现,注意边界条件,如果不存在,输出nullSELECT IFNULL((SELECT DISTINCT Salary FROM Employee ORDER BY Salary DESC LIMIT 1,1),NULL)耗时:964 ms上述方法并不高效,更高效的方法是:先用max函数求出最大值,再在剩下的值中取出最大值select max(salary) from Employee原创 2016-03-22 12:18:38 · 268 阅读 · 0 评论 -
Nth Highest Salary
考察sql中函数使用,表内自联结排序,可以得到rand。CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INTBEGIN RETURN ( SELECT DISTINCT A.Salary FROM (SELECT E2.Id,E2.Salary,COUNT(1) AS RANK FROM (SELEC原创 2016-03-22 12:22:07 · 277 阅读 · 0 评论 -
Consecutive Numbers
表内自连接,注意是连续的,是内连接SELECT DISTINCT l1.Num from Logs l1INNER JOIN Logs l2INNER JOIN Logs l3ON l2.Id=l1.Id+1 AND l1.Num=l2.NumAND l3.Id=l2.Id+1 AND l2.Num=l3.Num原创 2016-03-22 14:33:42 · 493 阅读 · 0 评论 -
Employees Earning More Than Their Managers
看似复杂,其实很简单,两表内连接就好了 https://leetcode.com/problems/employees-earning-more-than-their-managers/SELECT E1.Name FROM Employee E1 INNER JOIN Employee E2WHERE E1.Salary>E2.Salary AND E1.ManagerId=E2.Id原创 2016-03-22 14:35:18 · 268 阅读 · 0 评论 -
Duplicate Emails
考察having的用法,having是结果集进行限定。 https://leetcode.com/problems/duplicate-emails/SELECT Email FROM Person GROUP BY Email HAVING COUNT(*) > 1原创 2016-03-22 14:36:37 · 334 阅读 · 0 评论 -
Customers Who Never Order
考察not in的用法 https://leetcode.com/problems/customers-who-never-order/SELECT Name FROM Customers WHERE Id NOT IN (SELECT CustomerId FROM Orders)原创 2016-03-22 14:38:42 · 233 阅读 · 0 评论 -
Department Highest Salary
表内自连接,分组排序 https://leetcode.com/problems/department-highest-salary/SELECT D.Name AS Department,A.Employee,A.Salary FROM(SELECT C.DepartmentId,C.Name AS Employee,C.Salary FROM(SELECT E1.id,E1.Name,E1原创 2016-03-22 14:40:05 · 652 阅读 · 0 评论 -
HANA中的SQL&SQLScript&Procedure
一.SQLHANA中的SQL方言是基于原创 2014-07-24 10:25:26 · 4010 阅读 · 0 评论