数据库性能

几种常见数据库连接池的使用比较

岁酱吖の 提交于 2019-12-02 00:06:06
感觉在介绍之前有必要阐述一下连接池的几个概念,有助于后边一些文字的理解。 最原始的数据库使用就是打开一个连接并进行使用,使用过后一定要关闭连接释放资源。由于频繁的打开和关闭连接对jvm包括数据库 都有一定的资源负荷,尤其应用压力较大时资源占用比较多容易产生性能问题。由此使用连接池的作用就显现出来,他的原理其实不复杂: 先打开一定数量的数据库连接,当使用的时候分配给调用者,调用完毕后返回给连接池,注意返回给连接池后这些连接并不会关闭,而是 准备给下一个调用者进行分配。由此可以看出连接池节省了大量的数据库连接打开和关闭的动作,对系统性能提升的益处不言而喻。 几个概念: 最小连接--应用启动后随即打开的连接数以及后续最小维持的连接数。 最大连接数--应用能够使用的最多的连接数 连接增长数--应用每次新打开的连接个数 举个例子说明连接池的运作: 假设设置了最小和最大的连接为10,20,那么应用一旦启动则首先打开10个数据库连接,但注意此时数据库连接池的正在使用数字为0--因为你并没有使用这些连接,而空闲的数量则是10。然后你开始登录,假设登录代码使用了一个连接进行查询,那么此时数据库连接池的正在使用数字为1、空闲数为9,这并不需要从数据库打开连接--因为连接池已经准备好了10个给你留着呢。登录结束了,当前连接池的连接数量是多少?当然是0,因为那个连接随着事务的结束已经返还给连接池了

mysql查看数据库性能常用命令

只谈情不闲聊 提交于 2019-12-01 23:33:04
mysql查看数据库性能常用命令 mysql> show global status;   可以列出MySQL服务器运行各种状态值,另外,查询MySQL服务器配置信息语句:   mysql> show variables;    一、慢查询   mysql> show variables like '%slow%';   +------------------+-------+   | Variable_name | Value |   +------------------+-------+   | log_slow_queries | ON |   | slow_launch_time | 2 |   +------------------+-------+   mysql> show global status like '%slow%';   +---------------------+-------+   | Variable_name | Value |   +---------------------+-------+   | Slow_launch_threads | 0 |   | Slow_queries | 4148 |   +---------------------+-------+   配置中打开了记录慢查询,执行时间超过2秒的即为慢查询

SQL优化-如何分析性能瓶颈

我只是一个虾纸丫 提交于 2019-12-01 20:23:29
MySQL优化一览图 笔者将优化分为了两大类: 软优化和硬优化 。软优化一般是操作数据库即可;而硬优化则是操作服务器硬件及参数设置。 1、软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息。 例: DESC SELECT * FROM `user` 其中会显示索引和查询数据读取数据条数等信息。 2)优化子查询 在MySQL中,尽量使用JOIN来代替子查询。因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高。 3)使用索引 索引是提高数据库查询速度最重要的方法之一,使用索引的三大注意事项包括: LIKE关键字匹配'%'开头的字符串,不会使用索引; OR关键字的两个字段必须都是用了索引,该查询才会使用索引; 使用多列索引必须满足最左匹配。 4)分解表 对于字段较多的表,如果某些字段使用频率较低,此时应当将其分离出来从而形成新的表。 5)中间表 对于将大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时。 6)增加冗余字段 类似于创建中间表,增加冗余也是为了减少连接查询。 7)分析表、检查表、优化表 分析表主要是分析表中关键字的分布;检查表主要是检查表中是否存在错误;优化表主要是消除删除或更新造成的表空间浪费。 分析表:

大型php网站性能和并发访问优化方案

╄→гoц情女王★ 提交于 2019-12-01 18:32:49
网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢?本文为你提供一份大型php网站性能和并发访问优化方案. 一、大型网站性能提高策略: 大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。这几个解决思路在一定程度上意味着更大的投入。 web容器是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以多个容器。 1、HTML静态化 其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。 2、图片服务器分离 大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的、甚至很多台的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃。

NoSQL开篇——为什么要使用NoSQL

风格不统一 提交于 2019-12-01 15:52:44
http://nosql-database.org/ NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会。 非常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL的发展,希望跟我一样有兴趣的朋友加入进来。这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自己的项目中合适的场景中,还会适当地分析一些成功案例,希望有成功使用NoSQL经验的朋友给我提供一些线索和信息。 NoSQL 的分类 NoSQL仅仅是一个概念,NoSQL数据库根据数据的存储模型和特点分为很多种类。 类型 部分代表 特点 列存储 Hbase Cassandra Hypertable 顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。 文档存储 MongoDB CouchDB 文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。 key-value存储 Tokyo Cabinet

云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析

心不动则不痛 提交于 2019-12-01 15:32:21
POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB。 POLARDB融合了商业数据库稳定、可靠、高性能的特征,同时具有开源数据库简单、可扩展、高速迭代的优势,适合各个行业公司的创新业务使用。本专场中,来自阿里云、江娱互动以及猿辅导的各位技术大咖一起共同探讨了下一代云原生数据库POLARDB。 1、云原生数据库的演进方向和客户价值 阿里云智能数据库总经理曹伟为大家介绍了云原生数据库的演进方向以及阿里云POLARDB数据库的产品能力。 阿里云RDS和POLARDB都属于OLTP的关系性数据库,那就让我们先看下全球关系型数据库的市场情况。 如今,关系型数据库依旧是“老大哥”,但是过去的十年中关系型数据库领域也发生了一些微妙的变化。伴随着开源运动的兴起和MySQL、PostgreSQL等数据库的出现,很多用户开始在生产系统中大量使用开源数据库,因此商业数据库的市场受到了一定的挤压。 开源数据库的出现影响了整个数据库市场的格局和版图,也为阿里巴巴在数据库市场提供了一个重大的机会。经过十年的时间,阿里云数据库做到了“全国第一,全球领先”。当然,影响数据库格局的重要因素除了开源之外,还有云计算的兴起。 在云时代

数据库分库分表思路

时光怂恿深爱的人放手 提交于 2019-12-01 13:17:39
转自: https://www.cnblogs.com/butterfly100/p/9034281.html 一. 数据切分 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。 数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。 数据切分根据其切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分 1、垂直(纵向)切分 垂直切分常见有垂直分库和垂直分表两种。 垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与"微服务治理"的做法相似,每个微服务使用单独的一个数据库。如图: 垂直分表是基于数据库中的"列"进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中。在字段很多的情况下(例如一个大表有100多个字段),通过"大表拆小表",更便于开发与维护,也能避免跨页问题

mysql面试题目笔记 <非原创> (作为自己的参考资料)

a 夏天 提交于 2019-12-01 11:58:10
1.主键超键候选键外键是什么? 定义: 超键:在关系中可以唯一标识元组的属性集。 初始键:不包含多余属性的超键。 主键:用户选作元组标识的一个附加键程序主键。 外键:如果关系R中的属性集是关系L中的主键,那么该属性集为关系R的外键。 超键 在关系中能唯一标识元组的属性集称为关系模式的超键。 这样我们从示例中可以发现学号是标识学生实体的唯一标识。那么该元组的超键就为学号。 除此之外我们还可以把它跟其他属性组合起来,比如: ( 学号 , 性别 ) ( 学号 , 年龄 ) 这样也是超键。 初始键 排除多余属性的超键为预期键。 根据示例可知,学号是一个可以唯一标识元组的唯一标识,因此学号是一个附加键,实际上,指向键是超键的子集,而非(学号,年龄)是超键,但是它不是预设键。因为它还有了额外的属性。 主键 用户选择的预设键作为该元组的唯一标识,那么它就以此为主键。 简单的说,示例中的元组的扩展键为学号,但是我们将他作为该元组的唯一标识,那么学号就以此为主。 外键 外键是相对于主键的,某些在学生记录里,主键为学号,在成绩单表中也有学号插入,因此学号为成绩单表的外键,为学生表的主键。 总结 主键为预期键的子集,外部键为超键的子集,而外键的确定是相对于主键的。 2.数据库事务的四个特性: ACID:原子性,一致性,隔离性,持久性。 原子性:数据库的所有操作要么完成,要么全部不完成

MySql,Mssql,Oracle三种数据库性能优缺点及异同

天涯浪子 提交于 2019-12-01 11:03:15
MySql 优点 MySql是一个快速、多线程、多用户的SQL数据库服务器。几乎是免费的,支持正规的SQL查询语言和采用多种数据类型,能对数据进行各种详细的查询等。   MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySql能很容易充分利用CPU。   MySql可运行在不同的操作系统下。简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUN OS等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。   MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。   MySql支持ODBC for Windows。MySql支持所有的ODBC 2.5函数和其他许多函数,这样就可以用Access连接MySql服务器,从而使得MySql的应用被大大扩展。   MySql支持大型的数据库。虽然对于用PHP编写的网页来说只要能够存放上百条以上的记录数据就足够了,但MySql可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,MySql可以针对不同的应用进行相应的修改。  

mysql操作规范建议

℡╲_俬逩灬. 提交于 2019-12-01 10:27:00
作者: 听风,原文地址: https://www.cnblogs.com/huchong/p/10219318.html 。 数据库命令规范 数据库基本设计规范 所有表必须使用 Innodb 存储引擎 数据库和表的字符集统一使用 UTF8 所有表和字段都需要添加注释 尽量控制单表数据量的大小,建议控制在 500 万以内。 谨慎使用 MySQL 分区表 6.尽量做到冷热数据分离,减小表的宽度 禁止在表中建立预留字段 禁止在数据库中存储图片,文件等大的二进制数据 禁止在线上做数据库压力测试 禁止从开发环境,测试环境直接连接生成环境数据库 数据库字段设计规范 优先选择符合存储需要的最小的数据类型 避免使用 TEXT,BLOB 数据类型,最常见的 TEXT 类型可以存储 64k 的数据 避免使用 ENUM 类型 尽可能把所有列定义为 NOT NULL 使用 TIMESTAMP(4 个字节) 或 DATETIME 类型 (8 个字节) 存储时间 同财务相关的金额类数据必须使用 decimal 类型 索引设计规范 限制每张表上的索引数量,建议单张表索引不超过 5 个 禁止给表中的每一列都建立单独的索引 每个 Innodb 表必须有个主键 常见索引列建议 5.如何选择索引列的顺序 避免建立冗余索引和重复索引(增加了查询优化器生成执行计划的时间) 对于频繁的查询优先考虑使用覆盖索引 8.索引