数据库
文章平均质量分 51
张超帅
哈哈哈哈哈哈
展开
-
存储过程
在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。下面是为一个创建存储过程的常用语法: create procedure(proc) sp_name @参数名 参数类型 as原创 2017-09-04 23:39:49 · 319 阅读 · 0 评论 -
主从复制和读写分离
主从复制原理:mysql要做到主从复制,其实依靠的是二进制日志,即:假设主服务器叫A,从服务器叫B;主从复制就是 B跟着A学,A做什么,B就做什么。那么B怎么同步A的动作呢?现在A有一个日志功能,把自己所做的增删改查的动作 全都记录在日志中,B只需要拿到这份日志,照着日志上面的动作施加到自己身上就可以了。这样就实现了主从复制。扩展:MYSQL还有一种日志叫做:慢日志 可以设置一个时原创 2017-10-20 09:10:11 · 685 阅读 · 0 评论 -
mysql的sql执行计划
引言: 实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表、怎样使用索引的,因此,我们能感知到的就只有 sql语句运行的时间,在数据规模不大时,查询是瞬间的,因此,在写sql语句的时候就很少考虑到性能的问题。但是当数据规模增大,如千万、亿的时候,我们运 行同样的sql语句时却发现迟迟没有结果,这个时候才知道数据规模已经限制了我们查询的速度。所以,查询优化原创 2017-10-22 08:44:39 · 168 阅读 · 0 评论 -
SQL优化准则
禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在where子句使用!= 或者<> 尽量避免在where子句使用or连接 尽量避免对字段进行表达式计算 尽量避免对字段进行函数操作 尽量避免使用不是复合索引的前缀列进行过滤连接 尽量少排序,如果可以,原创 2017-10-22 08:48:35 · 258 阅读 · 0 评论 -
数据库优化
第一优化你的sql和索引; 第二加缓存,memcached,redis; 第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护; 第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的原创 2017-10-13 01:01:41 · 207 阅读 · 0 评论 -
MySQL和Oracle的区别比较
(1) 自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。(2)单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有原创 2017-10-13 01:12:24 · 15852 阅读 · 3 评论 -
请您谈下数据库调优,指的是哪方面?
除了数据库语句调优,比较低级,没人问 以下几类数据都是不适合在数据库中存放的: 二进制多媒体数据 流水队列数据 超大文本数据 通过Cache技术来提高系统性能: 系统各种配置及规则数据; 活跃用户的基本信息数据; 活跃用户的个性化定制信息数据; 准实时的统计信息数据; 其他一些访问频繁但变更较少的数据;合理设计并利用索引1)B-Tree索引 B树是一种平衡的多路查找树。 一般原创 2017-10-14 22:54:08 · 402 阅读 · 0 评论 -
数据库基本语句
创建数据库 create database database_name; 删除数据库 drop database database_name; 创建数据表的语句为create table,语法规则如下: create table <表名> ( 字段1,数据类型 【列级别约束条件】 【默认值】, 字段2,数据类型 【列级别约束条件】 【默认值】, …… 【表级别约束条件】 )原创 2017-11-28 15:04:25 · 708 阅读 · 0 评论 -
数据库运算符
等于运算符(=) 用来判断数字,字符串和表达式是否相等。如果相等,返回值为1,否则返回值为0。安全等于运算符(<=>) <=>可以用来判断null值。在两个操作数均为null时,其返回值为1而不为null,而当一个操作数为null时,其返回值为0而不为null。不等于运算符(<>或者!=) <>或者!=用于判断数字,字符串,表达式不相等的判断。如果不相等,返回值为1;否则返回值为0;这两个运算原创 2017-11-28 15:44:27 · 2612 阅读 · 0 评论 -
查询数据
查询结果不重复 select distinct 字段名 from 表名 例查询fruits表中s_id字段的值,返回s_id字段值且不重复。select distinct s_id from fruits;降序排列 desc多列排序 查询fruits表中的f_name和f_price字段,先按f_name排序,再按f_price排序select f_name,f_price from fru原创 2017-11-28 16:38:10 · 761 阅读 · 0 评论 -
数据库存储过程和函数
创建查看fruits表的存储过程create procedure proc() begin select * from fruits; end;创建名称为countproc的存储过程create procedure countproc(out param1 int)beginselect count(*) into param1 from fruits;end;上述代码的作用是创建一个原创 2017-11-28 20:54:05 · 564 阅读 · 0 评论 -
MySQL架构
1.最上层是一些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。2.第二层架构主要完成大多少的核心服务功能,如SQL接口,并完成缓存原创 2017-10-20 09:06:06 · 415 阅读 · 0 评论 -
负载均衡
负载均衡是实际应用中使用非常普遍的一种优化方法,它的机制就是利用某种均衡算法,将固定的负载量分布到不同的服务器,以此来减轻单台服务器的负载,达到优化的目的。1.利用MySQL复制分流查询操作 利用MySQL的主从复制可以有效地分流更新操作和查询操作,具体的实现是一个主服务器承担更新操作,而多台从服务器承担查询操作,主从之间通过复制实现数据的同步。 多台从服务器一方面用来确保可用性,一方面可以创建原创 2017-10-20 08:54:37 · 197 阅读 · 0 评论 -
数据库知识点总结
外模式 外模式也称子模式(Subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 理解: ① 一个数据库可以有多个外模式; ② 外模式就是用户视图; ③ 外模式是保证数据安全性的一个有力措施。数据库系统的特点: 数据库系统的特点: 1.数据结构化 2.数据的共享性高、冗余度原创 2017-08-07 14:30:33 · 329 阅读 · 0 评论 -
数据库面试题
数据库的隔离级别 (一)可读取未确认(Read uncommitted) 写事务阻止其他写事务,避免了更新遗失。但是没有阻止其他读事务。 存在的问题:脏读。即读取到不正确的数据,因为另一个事务可能还没提交最终数据,这个读事务就读取了中途的数据,这个数据可能是不正确的。 解决办法就是下面的“可读取确认”。 (二)可读取确认(Read committed) 写事务会阻止其他读写事务。读事原创 2017-09-25 09:38:31 · 198 阅读 · 0 评论 -
数据库语句
在一个mysql查询中,使用哪一个关键字能去除重复列值:distinct原创 2017-09-25 23:33:20 · 180 阅读 · 0 评论 -
乐观锁和悲观锁
先说乐观锁和悲观锁的机制: 1. 乐观锁是一种思想,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,如果一样更新,反之拒绝。之所以叫乐观,因为这个模式没有从数据库加锁。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。悲观锁(Pessimist原创 2017-10-01 00:12:02 · 184 阅读 · 0 评论 -
数据库的数据隔离级别
脏读:一个事务读到另一个事务未提交的更新数据(A和B事务并发执行,B事务执行更新后,A事务查询B事务没有提交的数据,B事务回滚,则A事务得到的数据不是数据库中的真实数据。也就是脏数据,即和数据库中不一致的数据)。不可重复读:一个事务读到另一个事务已提交的更新数据(A和B事务并发执行,A事务查询数据,然后B事务更新该数据,A再次查询该数据时,发现该数据变化了)。虚读(幻读):一个事务读到另一个事务已提原创 2017-10-01 21:28:21 · 182 阅读 · 0 评论 -
数据库选择合适的数据类型
char与varchar 区别一,定长和变长 char 表示定长,长度固定,varchar表示变长,即长度可变区别之二,存储的容量不同 对char来说,最多能存放的字符个数 255,和编码无关。 而varchar呢,最多能存放 65532 个字符。char和varchar类似,都是用来存储字符串,但它们保存和检索的方式不同。char属于固定长度的字符类型,而varchar属于可变长度的字符类原创 2017-10-02 21:33:32 · 2838 阅读 · 0 评论 -
数据库索引
MySQL5.5以后默认使用InnoDB存储引擎 MyISAM和InnoDB存储引擎的表默认创建的都是BTREE索引。索引的作用: 加快检索 创建唯一索引,保证每一行数据唯一 减少查询中分组和排序时间 加快表与表之间的连接缺点: 创建和维护耗时间 占物理内存 对表增删改,索引也要动态维护。索引越长,所花时间越长。索引的应用场景: 需要经常检索的列上 经常用在连接的行上 经常需要原创 2017-10-02 00:14:20 · 145 阅读 · 0 评论 -
数据库设计三大范式
1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分原创 2017-10-03 15:16:14 · 319 阅读 · 0 评论 -
MySQL的数据库存储引擎--MyISAM和InnoDB
MySQL5.5以后默认使用InnoDB存储引擎 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。 基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。 MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。原创 2017-10-04 10:01:01 · 166 阅读 · 0 评论 -
关系型数据库和非关系型数据库的区别
关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统非关系型数据库分类 面向高性能并发读写的key-value数据库: key-value数据库的主要特点即使具有极高的并发读写性能原创 2017-10-04 13:39:44 · 452 阅读 · 0 评论 -
Navicat for Mysql连接mysql数据库时出现 2003-Can't connect to MySql server on 'localhost'(10061)
1.打开 ’ 计算机 ‘–&gt;点击左边‘ 计算机 ’–&gt;在搜索栏中输入‘ mysqld ’,找到后启动即可 2.启动好后,再连接,这个时候就不会出现上面的那个问题了。...转载 2018-07-28 11:19:17 · 851 阅读 · 0 评论