数据库

1.mangodb你有了解过吗?
MongoDB[1] 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2.mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
1)mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎):innodb_trx ##当前运行的所有事务innodb_locks ##当前出现的锁innodb_lock_waits ## 锁等待的对应关系

2)mysql如何减少主从复制延迟:
如果延迟比较大,就先确认以下几个因素:
1. 从库硬件比主库差,导致复制延迟
2. 主从复制单线程,如果主库写并发太大,来不及传送到从库,就会导致延迟。更高版本的mysql可以支持多线程复制
3. 慢SQL语句过多
4. 网络延迟
5. master负载
主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层6. slave负载
一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器,只作为备份用,不进行其他任何操作.
另外, 2个可以减少延迟的参数:

–slave-net-timeout=seconds 单位为秒 默认设置为 3600#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试。

通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟
MySQL数据库主从同步延迟解决方案
最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行。还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog,innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave。

3.crc32校验
CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值。由于CRC32产生校验值时源数据块的每一个bit(位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的CRC32值.
CRC是一种数据错误检查技术,它可以确保最初写入镜像文件的数据与从镜像文件中使用的数据保持一致。
CRC32表示使用32位来保存错误检查信息,在创建镜像文件的时候,CRC32的详细信息将嵌入到该文件中,以确保在将该文件还原到磁盘时能够检测到它是否已经损坏。

CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

4.mysql中各个版本之间的差距
mysql-server-4.1
增加了子查询的支持,字符集增加UTF-8,GROUP BY语句增加了ROLLUP,mysql.user表采用了更好的加密算法,innodb开始支持单独的表空间。

mysql-server-5.5
默认存储引擎更改为InnoDB

mysql-server-5.6
1)InnoDB现在可以限制大量表打开的时候内存占用过多的问题(比如这里提到的)(第三方已有补丁)
2)InnoDB死锁信息可以记录到 error 日志,方便分析
3)MySQL5.6支持延时复制,可以让slave跟master之间控制一个时间间隔,方便特殊情况下的数据恢复。

5.mysql和redis的区别
Mysql是关系型数据库
Redis是非关系型数据库

6.Redis的优势
a.缓存管理:可以在必要时将无效的旧数据从内存中删除,为新数据腾出新的空间(过期的key的三种清理策略)。
b.提供更大的灵活性:redis支持多种类型,并且采用key-value 的形式存储,key和value的大小限制都是512Mb,与编码无关,所以数据安全。但是memcached限制key最大为250字节,value为1MB,况且只支持String类型。Redis通过Hash来存储一个对象的字段和值,并且可以通过单个key来管理它们(设置值,设置过期时间),而且我们可以很方便的通过Linux命令或者redis-cli完成对key的管理。
c.redis提供主从复制:实现高可用的cache系统,支持集群中多个服务器之间的数据同步。
d.数据持久化:redis可以通过两种方式将数据进行持久化,一定程度上规避缓存中的数据不稳定的问题,也可以在重启服务器时最快的恢复缓存中所需的数据,提高了效率的同事减轻了主数据库系统的开销。

7.Redis和memecache的区别
Memcached唯一支持的数据类型是String,所以更适合存储只读数据,因为字符串并不会因为额外的处理造成额外的开销。

8.Redis为什么快?
完全基于内存: Redis是纯内存数据库,相对于读写磁盘,读写内存的速度就不是几倍几十倍了,一般,hash查找可以达到每秒百万次的数量级。
多路复用IO:“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)。可以直接理解为:单线程的原子操作,避免上下文切换的时间和性能消耗;加上对内存中数据的处理速度,很自然的提高redis的吞吐量。
9.mysql线程池
线程池是Mysql5.6的一个核心功能,对于服务器应用而言,无论是web应用服务还是DB服务,高并发请求始终是一个绕不开的话题。当有大量请求并发访问时,一定伴随着资源的不断创建和释放,导致资源利用率低,降低了服务质量。线程池是一种通用的技术,通过预先创建一定数量的线程,当有请求达到时,线程池分配一个线程提供服务,请求结束后,该线程又去服务其他请求。 通过这种方式,避免了线程和内存对象的频繁创建和释放,降低了服务端的并发度,减少了上下文切换和资源的竞争,提高资源利用效率。所有服务的线程池本质都是位了提高资源利用效率,并且实现方式也大体相同。

10.关系型数据库和非关系型数据库之间的区别

关系型数据库通过外键关联来建立表与表之间的关系;非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

11.如何实现mysql的读写分离
Mysql-proxy lua

12.mysql之间如何进行主从复制,master挂了以后,slave如何进行接管?客户此时应该如何访问数据库才能实现无障碍

13.mysql如何修改密码

方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password(‘新密’);
例子:mysql> set password for root@localhost = password(‘123’);

方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123

方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123’) where user=’root’ and host=’localhost’;
mysql> flush privileges;

方法4:在忘记root密码的时候,可以这样
1. 关闭正在运行的MySQL服务。
2. 输入mysqld –skip-grant-tables 回车。
–skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表证。
3. 连接权限数据库: use mysql; 。
4. 改密码:update user set password=password(“123”) where user=”root”(别忘了最后加分号) 。
5. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。

14.MySQL逻辑架构

MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。

MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。

最下层为存储引擎,其负责MySQL中的数据存储和提取。和Linux下的文件系统类似,每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信,这些API接口屏蔽了不同存储引擎间的差异。

15.mysql如何实现优化
http://blog.csdn.net/zhangliangzi/article/details/52329355

16.向mysql发送一个请求时,mysql到底做了什么?

17.mysql怎么样进行数据备份
1)mysqldump:支持基于innodb的热备份,由于是逻辑备份,所以比较慢
2)基于LVM快照备份:在物理备份中,有基于文件系统的物理备份
3)Tar之类的命令对整个数据库目录进行打包备份,但是这些只能进行冷备份,不同的存储引擎备份的也不一样,myisam自动备份到表级别,而innodb不开启独立表空间的话,只能备份整个数据库
4)Percona提供的xtrabackup工具:支持innodb的物理热备份,增量备份,而且速度非常快,支持innodb存储引起的数据在不同数据库之间迁移,支持复制模式下的从机备份恢复。为了让xtrabackup支持更多的功能拓展,可以设计独立表结构,打开innod_file_per_table功能,启用以后可以支持单独的表备份。

18.数据库的分段是什么?
水平分段,导出式分段,垂直分段,以及混合式分

19.sql语句

use mysql; ##使用数据库 
show tables; ##显示表单
desc user; ##查看表格结构
select * from user; ##查询user的数据 
select * from user where HOST=’127.0.0.1create database westos;    ##创建westos的数据库
use westos;                ##使用westos的数据库
create table linux(        ##创建表格
   username varchar(50) not null,
   password varchar(50) not null,
   age varchar(50) );
insert into linux values ('lee','123','20')  ##往表格中插入数据
alter table linux rename to message;   ##修改表名
alter table linux add class varchar(50);  ##向表中添加字段
alter table linux add class varchar(50) after password; 
alter table linux drop class;  ##删除表中某字段
update linux set class='linux';  ##修改表中字段的信息
update linux set class='java' where username='lee';
授权首先得由接受授权的对象,所以,应该先添加数据库用户
create user lee@localhost idenfified by 'lee';  ##创建用户lee
show grants for lee@localhost; ##查看lee都有哪些权限
例1:给lee用户westos数据库下的所有表的select权限
    grant select on westos.* to lee@localhost;
例2:撤销lee用户在westos数据库下所有表的drop权限
    revoke drop on westos.* from lee@localhost
 flush privileges;   ##重载授权表

20.mysql中的触发器
http://blog.csdn.net/yabingshi_tech/article/details/52451929

21.innodb是什么
InnoDB,是MySQL的数据库引擎之一

22.nosql和sql
1)概念
SQL (Structured Query Language) 数据库,指关系型数据库 - 主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源)。
NoSQL(Not Only SQL)泛指非关系型数据库 - 主要代表:MongoDB,Redis,CouchDB。
2)主要区别
关系型数据库
<1>关系数据库的特点是:
- 数据关系模型基于关系模型,结构化存储,完整性约束。
- 基于二维表及其之间的联系,需要连接、并、交、差、除等数据操作。
- 采用结构化的查询语言(SQL)做数据读写。
- 操作需要数据的一致性,需要事务甚至是强一致性。
<2>优点:
- 保持数据的一致性(事务处理)
- 可以进行join等复杂查询。
- 通用化,技术成熟。
<3>缺点:
- 数据读写必须经过sql解析,大量数据、高并发下读写性能不足。
- 对数据做读写,或修改数据结构时需要加锁,影响并发操作。
- 无法适应非结构化存储。
- 扩展困难。
- 昂贵、复杂。

NoSQL数据库
<1>NoSQL数据库的特点是:
- 非结构化的存储。
- 基于多维关系模型。
- 具有特有的使用场景。
<2>优点:
- 高并发,大数据下读写能力较强。
- 基本支持分布式,易于扩展,可伸缩。
- 简单,弱结构化存储。
<3>缺点:
- join等复杂操作能力较弱。
- 事务支持较弱。
- 通用性差。
- 无完整约束复杂业务场景支持较差。
虽然在云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代,NoSQL只能作为传统数据的补充而不能将其替代,所以规避传统数据库的缺点是目前大数据时代必须要解决的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值