目录
1、线程池优化
2、硬件优化
3、索引优化
4、慢查询日志
5、内存优化
6、连接数优化(超时时间)
7、分库分表
8、存储过程
关系数据库和非关系数据库
关系型数据库
一个结构化的数据库,创建在关系模型基础上 一般面向于记录 包括 Oracle、MySQL、SQL Server、 Microsoft Access、DB2等
非关系型数据库
除了主流的关系型数据库外的数据库,都认为是非关系型 包括
Redis、MongBD、Hbase、CouhDB等
关系数据库和非关系数据库的区别
关系数据库:
-
数据组织:关系数据库使用表(Table)的方式来组织数据,每个表包含固定的列和行,而每行的数据必须符合表定义的结构。
-
数据模型:关系数据库采用结构化数据模型,使用事先定义好的表结构、字段类型和关系约束,比较适合存储结构化和相对稳定的数据。
-
数据一致性:关系数据库强调数据一致性和完整性,通过使用ACID(原子性、一致性、隔离性和持久性)事务来确保数据的正确性。
-
强大的查询语言:关系数据库使用结构化查询语言(SQL)进行数据查询和操作,提供了强大且灵活的查询能力。
-
数据关联:关系数据库通过外键关联来实现多个表之间的关系,保持数据的一致性和完整性。
-
可扩展性:关系数据库通常采用垂直扩展方式,通过增加更强大的硬件来提高性能和容量。
非关系数据库:
-
数据组织:非关系数据库使用各种数据结构来组织数据,如键-值对(Key-Value)、文档(Document)、列族(Column Family)等,数据结构相对灵活。
-
数据模型:非关系数据库采用非结构化或半结构化数据模型,适用于存储非规范化和半结构化的数据。
-
弱一致性:非关系数据库通常强调分布式系统的可伸缩性和高性能,牺牲了一致性,提供了最终一致性、柔性事务等不同级别的数据一致性保证。
-
灵活的查询语言:非关系数据库使用不同的查询语言或API进行数据操作,例如MongoDB使用类似JSON的查询语法。
-
NoSQL特性:非关系数据库一般支持NoSQL(Not Only SQL)的特性,如水平扩展、分布式架构和高可用性等。
-
可扩展性:非关系数据库通常采用水平扩展方式,通过增加更多的节点来提高性能和容量。
总的来说,关系数据库更适合存储结构化和事务性较强的数据,而非关系数据库则更适合存储半结构化、非规范化和需要高性能和可伸缩性的数据。选择使用哪种类型的数据库取决于具体应用场景和需求。
Redis安装部署
Redis基于内存运行并支持持久化
采用key-value (键值对)的存储形式
优点
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份
Redis数据库常用命令
-
SET key value:设置指定键的值。
-
GET key:获取指定键的值。
-
DEL key:删除指定键。
-
KEYS pattern:查找符合给定模式的键。
-
EXPIRE key seconds:为键设置过期时间。
-
INCR key:将键的值递增1。
-
LPUSH key value:将值从列表左侧推入。
-
LPOP key:从列表左侧弹出一个值。
Redis持久化
Redis 提供两种持久化方式,可将数据保存到磁盘以防止数据丢失。
-
RDB(Redis Database)持久化:将内存中的数据定期保存到磁盘上的二进制文件。
-
AOF(Append-Only File)持久化:将每个写操作追加到文件末尾,重启时重新执行这些写操作进行数据恢复。
Redis性能管理
-
使用适当的数据结构和命令:Redis 提供了多种数据结构和相应的命令,根据具体需求选择合适的数据结构和命令,以提高性能。
-
设置合理的内存策略:通过配置 Redis 的最大内存限制和淘汰策略来管理数据在内存中的存储。
-
使用持久化功能:将数据进行持久化可以防止意外数据丢失,并在重启后恢复数据。
非关系数据库产生背景
-
随着互联网应用的发展,传统的关系型数据库在处理大规模、高并发、分布式等场景下遇到了一些挑战,例如扩展性、性能和灵活性等方面。为了解决这些问题,非关系型数据库应运而生,它们采用了不同的数据模型和存储方式,以满足特定场景的需求。
总结关系与非关系
-
关系数据库适用于结构化和事务性较强的数据,而非关系数据库适用于半结构化、非规范化和需要高性能和可伸缩性的数据。
-
关系数据库强调一致性和完整性,支持 ACID 事务,而非关系数据库则更注重分布式系统的可伸缩性和高性能,并提供了最终一致性的保证。
-
关系数据库使用 SQL 进行数据操作,而非关系数据库使用各种不同的查询语言或 API。
-
关系数据库采用垂直扩展,而非关系数据库采用水平扩展。
了解redis
Redis是一种开源的高性能键值存储系统,它以内存作为数据存储介质,通过简单而强大的键值对结构来存储数据,并提供了多种数据结构的支持。Redis的名字来自于"Remote Dictionary Server"的缩写。
Redis支持的数据结构包括字符串(String)、列表(List)、哈希表(Hash)、集合(Set)和有序集合(Sorted Set)。这些数据结构不仅可以存储简单的键值对,还可以进行复杂的操作。例如,它允许在列表中添加、删除和获取元素,对集合执行交集、并集和差集运算,对有序集合按照分数进行排序等。
Redis具有以下特点:
-
高性能:Redis将数据存储在内存中,读写速度非常快。
-
丰富的数据类型:Redis支持多种数据类型,适用于不同的应用场景。
-
持久化:Redis可以将数据保存到磁盘上,以防止数据丢失。
-
多功能:Redis提供了很多有用的功能,如发布/订阅、事务和Lua脚本等。
-
分布式:Redis支持主从复制和分片等方式进行水平扩展。
Redis广泛应用于缓存、队列系统、计数器、实时排行榜、发布/订阅系统等场景。它的简单、高效和可靠的特性使得它成为很多应用程序的首选数据存储解决方案之一。
redis优点
-
高性能:Redis 将数据存储在内存中,读写速度非常快。
-
支持丰富的数据结构:Redis 提供了多种数据结构(如字符串、列表、哈希表等),使其更适合处理不同类型的数据。
-
可扩展性:Redis 可以通过主从复制和分片等方式进行水平扩展,以满足高并发和大容量的需求。
-
持久化支持:Redis 支持 RDB 和 AOF 两种持久化方式,可以将数据保存到磁盘以防止数据丢失。
-
丰富的功能:Redis 提供了许多有用的功能,如发布/订阅、事务支持和 Lua 脚本等。
redis为什么这么快
-
数据存储在内存中:由于 Redis 将数据存储在内存中,读写操作都是在内存中完成,所以具有很高的读写速度。
-
单线程模型:Redis 使用单线程模型处理客户端请求,避免了多线程切换和加锁的开销。
-
非阻塞 I/O:Redis 使用了事件驱动的非阻塞 I/O 模型,实现高效的网络通信和请求处理。
-
优化的数据结构和算法:Redis 使用了优化的数据结构和算法,如跳跃表(Skip List)和快速字符串编码等,提高了性能和存储效