MYSQL性能优化详解(二)

接着上一篇学习:http://www.cnblogs.com/quanzhiguo/p/6401453.html

 

七、MySQL数据库Schema设计的性能优化

高效的模型设计

适度冗余-让Query尽两减少Join

大字段垂直分拆-summary表优化

大表水平分拆-基于类型的分拆优化

统计表-准实时优化

合适的数据类型

时间存储格式总类并不是太多,我们常用的主要就是DATETIME,DATE和TIMESTAMP这三种了。从存储空间来看TIMESTAMP最少,四个字节,而其他两种数据类型都是八个字节,多了一倍。而TIMESTAMP的缺点在于他只能存储从1970年之后的时间,而另外两种时间类型可以存放最早从1001年开始的时间。如果有需要存放早于1970年之前的时间的需求,我们必须放弃TIMESTAMP类型,但是只要我们不需要使用1970年之前的时间,最好尽量使用TIMESTAMP来减少存储空间的占用。

字符存储类型

CHAR[(M)]类型属于静态长度类型,存放长度完全以字符数来计算,所以最终的存储长度是基于字符集的,如latin1则最大存储长度为255字节,但是如果使用gbk则最大存储长度为510字节。CHAR类型的存储特点是不管我们实际存放多长数据,在数据库中都会存放M个字符,不够的通过空格补上,M默认为1。虽然CHAR会通过空格补齐存放的空间,但是在访问数据的时候,MySQL会忽略最后的所有空格,所以如果我们的实际数据中如果在最后确实需要空格,则不能使用CHAR类型来存放。

VARCHAR[(M)]属于动态存储长度类型,仅存占用实际存储数据的长度。TINYTEXT,TEXT,MEDIUMTEXT和LONGTEXT这四种类型同属于一种存储方式,都是动态存储长度类型,不同的仅仅是最大长度的限制。

事务优化

1. 脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

2. 不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。

3. 幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

Innodb在事务隔离级别方面支持的信息如下:

1.READ UNCOMMITTED

常被成为Dirty Reads(脏读),可以说是事务上的最低隔离级别:在普通的非锁定模式下SELECT的执行使我们看到的数据可能并不是查询发起时间点的数据,因而在这个隔离度下是非Consistent Reads(一致性读);

2.READ COMMITTED

这一隔离级别下,不会出现DirtyRead,但是可能出现Non-RepeatableReads(不可重复读)和PhantomReads(幻读)。

3. REPEATABLE READ

REPEATABLE READ隔离级别是InnoDB默认的事务隔离级。在REPEATABLE READ隔离级别下,不会出现DirtyReads,也不会出现Non-Repeatable Read,但是仍然存在PhantomReads的可能性。

4.SERIALIZABLE

SERIALIZABLE隔离级别是标准事务隔离级别中的最高级别。设置为SERIALIZABLE隔离级别之后,在事务中的任何时候所看到的数据都是事务启动时刻的状态,不论在这期间有没有其他事务已经修改了某些数据并提交。所以,SERIALIZABLE事务隔离级别下,PhantomReads也不会出现。

八、可扩展性设计之数据切分

数据的垂直切分

数据的垂直切分,也可以称之为纵向切分。将数据库想象成为由很多个一大块一大块的“数据块”(表)组成,我们垂直的将这些“数据块”切开,然后将他们分散到多台数据库主机上面。这样的切分方法就是一个垂直(纵向)的数据切分。

垂直切分的优点

◆数据库的拆分简单明了,拆分规则明确;

◆应用程序模块清晰明确,整合容易;

◆数据维护方便易行,容易定位;

垂直切分的缺点

◆部分表关联无法在数据库级别完成,需要在程序中完成;

◆对于访问极其频繁且数据量超大的表仍然存在性能平静,不一定能满足要求;

◆事务处理相对更为复杂;

◆切分达到一定程度之后,扩展性会遇到限制;

◆过读切分可能会带来系统过渡复杂而难以维护。

数据的水平切分

数据的垂直切分基本上可以简单的理解为按照表按照模块来切分数据,而水平切分就不再是按照表或者是功能模块来切分了。一般来说,简单的水平切分主要是将某个访问极其平凡的表再按照某个字段的某种规则来分散到多个表之中,每个表中包含一部分数据。

水平切分的优点

◆表关联基本能够在数据库端全部完成;

◆不会存在某些超大型数据量和高负载的表遇到瓶颈的问题;

◆应用程序端整体架构改动相对较少;

◆事务处理相对简单;

◆只要切分规则能够定义好,基本上较难遇到扩展性限制;

水平切分的缺点

◆切分规则相对更为复杂,很难抽象出一个能够满足整个数据库的切分规则;

◆后期数据的维护难度有所增加,人为手工定位数据更困难;

◆应用系统各模块耦合度较高,可能会对后面数据的迁移拆分造成一定的困难。

数据切分与整合中可能存在的问题

1.引入分布式事务的问题

完全可以将一个跨多个数据库的分布式事务分拆成多个仅处于单个数据库上面的小事务,并通过应用程序来总控各个小事务。当然,这样作的要求就是我们的俄应用程序必须要有足够的健壮性,当然也会给应用程序带来一些技术难度。

2.跨节点Join的问题

推荐通过应用程序来进行处理,先在驱动表所在的MySQLServer中取出相应的驱动结果集,然后根据驱动结果集再到被驱动表所在的MySQL Server中取出相应的数据。

3.跨节点合并排序分页问题

从多个数据源并行的取数据,然后应用程序汇总处理。

九、可扩展性设计之Cache与Search的利用

通过引入Cache(Redis、Memcached),减少数据库的访问,增加性能。

通过引入Search(Lucene、Solr、ElasticSearch),利用搜索引擎高效的全文索引和分词算法,以及高效的数据检索实现,来解决数据库和传统的Cache软件完全无法解决的全文模糊搜索、分类统计查询等功能。

以上就是本文的全部内容,希望大家可以喜欢。

转载于:https://www.cnblogs.com/quanzhiguo/p/6401551.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解谷歌大脑丶城市大脑丶全球脑与互联网大脑的关系

人类很早就朦胧的发现社会组织具有神经系统的特征。19世纪到20世纪,一些前瞻的哲学家们开始不断将科技与脑进行了关联,提出了"器官映射","社会神经网络","全球脑"。 21世纪之后,更多科技大脑概念不断涌现,从互联网大脑到城市大脑,从谷…

滴滴自动驾驶CEO张博:十年内无人驾驶对消费者没有吸引力丨厚势汽车

来源:WAVE2019张博:在 2012 年滴滴创立的时候,我们是一个非常简单的想法。我们发现在打出租车的场景下,无论是司机还是乘客效率都非常低。在滴滴出现之前,一个乘客想要打出租车必须要下楼招一下手,这个信号…

garch预测 python_数据科学方面的Python库,实用!

作者:Python开发与大数据人工智能原文:公众号 Python开发与大数据人工智能Python是一种很棒的编程语言。事实上,它还是世界上发展最快的编程语言之一。它一次又一次证明了它在数据科学职位中的实用性。整个Python及其库的生态系统使其成为全世…

物联网中的推荐系统

来源:北京物联网智能技术应用协会作者 | Alexander Felfernig, Seda Polat Erdeniz编译 | CDA数据科学研究院Recommender systems in the Internet of Things1、背景介绍物联网是一种联网的基础架构,是物联网、互联网和语义学领域之间融合的结果&#xf…

pwm控制的基本原理_单片机PWM控制基本原理详解~

PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。首…

关上Deepfake的潘多拉魔盒,RealAI推出深度伪造视频检测工具

诞生之初,Deepfake是一项有趣的图像处理技术,仅仅带来搞笑和娱乐视频,但殊不知,潘多拉魔盒就此被打开,催生出色情黑产、恶搞政客“操纵”民意,Deepfake正逐步进化为一种新型“病毒”,人类伦理道…

谷歌地图的全球森林监察系统,揭秘中国雾霾的惊天秘密!

来源:老牛时评谷歌公司最近推出的全新交互式地图——“全球森林监察”它可以实时显示全球森林的覆盖情况。该幅地图的数据来源有多个,其中包括了NASA的森林面积覆盖率的分析数据。于是我们选取了中国及中国周边的部分,看完后的感受只能是比悲…

qt显示rgba8888 如何改 frame_Qt开源作品17-IP地址输入控件

一、前言这个IP地址输入框控件,估计写烂了,网上随便一搜索,保证一大堆,估计也是因为这个控件太容易了,非常适合新手练手,一般的思路都是用4个qlineedit控件拼起来,然后每个输入框设置正则表达式…

web.xml文件头出错

原先将web.xml文件头设置为如下格式 <?xml version"1.0" encoding"UTF-8"?><web-app version"3.1" xmlns"http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:sche…

Nature子刊超越诺贝尔经典理论:神经科学研究路漫漫...

科学家正在观察一台用于记录小鼠脑细胞活动的双光子显微镜。图片来源&#xff1a;艾伦研究所来源&#xff1a;中国生物技术网 北京时间12月17日&#xff0c;发表在《Nature Neuroscience》上一项针对小鼠视觉系统中近6万个神经元活动的新研究显示&#xff0c;要想了解大脑如何计…

偏见与人类大脑结构有关

来源&#xff1a;科技日报偏见是如何产生的&#xff1f;据英国《自然神经科学》16日发表的一项脑科学研究发现&#xff0c;内侧前额叶皮质后部&#xff08;pMFC&#xff09;会促进人类产生确认偏误。具体而言&#xff0c;对于那些不会让自己更加相信已有观念的意见&#xff0c;…

PLECS软件学习使用(一)简单的RLC电路搭建

PLECS软件学习使用&#xff08;一&#xff09;简单的RLC电路搭建 1相关操作总结&#xff1a; 旋转&#xff1a;CtrlR 翻转&#xff1a;CtrlF 从连线中引出线&#xff1a;Ctrl鼠标左键 设置元件参数&#xff1a;双击元件&#xff0c;进行设置&#xff0c;若要显示参数&#xff0…

《自然》公布年度十大杰出论文

来源&#xff1a;科技日报 英国《自然》杂志网站日前公布了2019年十大杰出论文&#xff0c;接近室温的超导体、精确编辑基因技术、海王星新卫星等纷纷入选。其中&#xff0c;中国研究占到两席&#xff0c;分别是来自复旦大学的亨廷顿舞蹈症新疗法&#xff0c;与中科院上海有机化…

中国电子信息工程科技发展十大趋势(2019)发布

来源&#xff1a;新浪科技17日&#xff0c;中国工程院信息与电子学部、中国信息与电子工程科技发展战略研究中心在中国工程院召开发布会&#xff0c;发布“中国电子信息工程科技发展十大趋势&#xff08;2019&#xff09;”。中国工程院副院长陈左宁院士表示&#xff0c;中国工…

Android junit单元测试

1.首先要把下面配置好&#xff08;注释的地方 Android studio 无需配置&#xff09;&#xff0c;targetPackage项目的包名 2.创建Android项目会自动生成test包&#xff0c;只能在test包下使用junit测试 3.在方法的前面加上Test就可以使用junit了 4.解释一下&#xff1a; assert…

21世纪20年代改变世界的十大趋势

来源&#xff1a;美国银行美国银行发布了新报告“21世纪20年代改变世界的十大趋势”。全球化高峰&#xff1a;世界范围内劳力、货物和资本自由流动将终结。在这种趋势下&#xff0c;赢家是本地市场和实物资产&#xff0c;而输家则是全球市场。衰退&#xff1a;更多的FMS投资者认…

多个if用什么设计模式_抽丝剥茧——单例设计模式

单例设计模式兄弟们好&#xff0c;今天是最后一个设计模式了&#xff0c;也是我们最熟悉的单例设计模式&#xff0c;可以说这个设计模式是我们最先接触到的设计模式了。想当年学习JavaSE的时候&#xff0c;老师聊到一个「饿汉式和懒汉式」&#xff0c;我还纠结了半天&#xff0…

计算机密码行业专题研究:网络安全最大弹性领域

来源&#xff1a;未来智库报告摘要&#xff1a;1、传统市场:政策驱动&#xff0c;预计传统密码增长中枢提升至30%密码是网络安全刚需&#xff0c;密码法2020年1月1日实施。政策驱动客户下沉&#xff0c;行业中期增速从10%提升至30%。2、新兴市场:物联网安全的基石&#xff0c;未…

人工智能军事对抗技术发展趋势

来源&#xff1a;战略前沿技术人工智能军事对抗技术人工智能&#xff08;AI&#xff09;作为新一代科技革命的典型代表性技术&#xff0c;目前已在世界各国的工业、金融、娱乐和公共安全等领域广泛应用&#xff0c;而其在军事领域的应用也正在快速发展。随着人工智能技术与军事…

java语言计算器怎么写_求助,一个计算器的括号功能怎么写啊。

求助&#xff0c;一个计算器的括号功能怎么写啊。import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;public class computer1 extends JFrame implements ActionListener{Double r1,r2,total,c1,c2;int i,j,j110,j27,c;JButton[] Bu…