海量url mysql_海量数据mysql优化步骤

第一优化你的sql和索引;

第二加缓存,memcached,redis;

第三以上都做了后,还是慢,就做主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工具推荐360的atlas,其它的要么效率不高,要么没人维护;

第四如果以上都做了还是慢,不要想着去做切分,mysql自带分区表,先试试这个,对你的应用是透明的,无需更改代码,但是sql语句是需要针对分区表做优化的,sql条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,另外分区表还有一些坑,在这里就不多说了;

第五如果以上都做了,那就先做垂直拆分,其实就是根据你模块的耦合度,将一个大的系统分为多个小的系统,也就是分布式系统;

第六才是水平切分,针对数据量大的表,这一步最麻烦,最能考验技术水平,要选择一个合理的sharding key,为了有好的查询效率,表结构也要改动,做一定的冗余,应用也要改,sql中尽量带sharding key,将数据定位到限定的表上去查,而不是扫描全部的表;

mysql数据库一般都是按照这个步骤去演化的,成本也是由低到高;

有人也许要说第一步优化sql和索引这还用说吗?的确,大家都知道,但是很多情况下,这一步做的并不到位,甚至有的只做了根据sql去建索引,根本没对sql优化(中枪了没?),除了最简单的增删改查外,想实现一个查询,可以写出很多种查询语句,不同的语句,根据你选择的引擎、表中数据的分布情况、索引情况、数据库优化策略、查询中的锁策略等因素,最终查询的效率相差很大;优化要从整体去考虑,有时你优化一条语句后,其它查询反而效率被降低了,所以要取一个平衡点;即使精通mysql的话,除了纯技术面优化,还要根据业务面去优化sql语句,这样才能达到最优效果;你敢说你的sql和索引已经是最优了吗?

再说一下不同引擎的优化,myisam读的效果好,写的效率差,这和它数据存储格式,索引的指针和锁的策略有关的,它的数据是顺序存储的(innodb数据存储方式是聚簇索引),他的索引btree上的节点是一个指向数据物理位置的指针,所以查找起来很快,(innodb索引节点存的则是数据的主键,所以需要根据主键二次查找);myisam锁是表锁,只有读读之间是并发的,写写之间和读写之间(读和插入之间是可以并发的,去设置concurrent_insert参数,定期执行表优化操作,更新操作就没有办法了)是串行的,所以写起来慢,并且默认的写优先级比读优先级高,高到写操作来了后,可以马上插入到读操作前面去,如果批量写,会导致读请求饿死,所以要设置读写优先级或设置多少写操作后执行读操作的策略;myisam不要使用查询时间太长的sql,如果策略使用不当,也会导致写饿死,所以尽量去拆分查询效率低的sql,

innodb一般都是行锁,这个一般指的是sql用到索引的时候,行锁是加在索引上的,不是加在数据记录上的,如果sql没有用到索引,仍然会锁定表,mysql的读写之间是可以并发的,普通的select是不需要锁的,当查询的记录遇到锁时,用的是一致性的非锁定快照读,也就是根据数据库隔离级别策略,会去读被锁定行的快照,其它更新或加锁读语句用的是当前读,读取原始行;因为普通读与写不冲突,所以innodb不会出现读写饿死的情况,又因为在使用索引的时候用的是行锁,锁的粒度小,竞争相同锁的情况就少,就增加了并发处理,所以并发读写的效率还是很优秀的,问题在于索引查询后的根据主键的二次查找导致效率低;

ps:很奇怪,为什innodb的索引叶子节点存的是主键而不是像mysism一样存数据的物理地址指针吗?如果存的是物理地址指针不就不需要二次查找了吗,这也是我开始的疑惑,根据mysism和innodb数据存储方式的差异去想,你就会明白了,我就不费口舌了!

所以innodb为了避免二次查找可以使用索引覆盖技术,无法使用索引覆盖的,再延伸一下就是基于索引覆盖实现延迟关联;不知道什么是索引覆盖的,建议你无论如何都要弄清楚它是怎么回事!

尽你所能去优化你的sql吧!说它成本低,却又是一项费时费力的活,需要在技术与业务都熟悉的情况下,用心去优化才能做到最优,优化后的效果也是立竿见影的!

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

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

相关文章

macos支持exfat吗_打造便捷、人性化的macOS桌面使用环境

原标题:打造便捷、人性化的macOS桌面使用环境打造便捷、人性化的macOS桌面使用环境 2020-10-23 17:25:410点赞4收藏0评论欢迎参加#果粉是怎样炼成的#征稿,围观秋季发布会新品!是什么让苹果生态无法割舍?快来讲讲你的果粉炼成记&am…

Delphi XE7的Splash 功能

Delphi XE7的Splash 功能转载于:https://www.cnblogs.com/LittleTiger/p/7020349.html

滴滴是如何搭建起PB级数据中台的?

滴滴公司自12年底上线至今,俨然成功跻身互联网大咖行列,在以流量活命的互联网世界里,如果没有一定的硬核技术为业务做支撑,单靠营销与宣传,是没有办法留住日益挑剔的用户的。我们今天就谈一谈滴滴打车背后所用到的大数…

gdbc 同步mysql_Jdbc数据同步

ElasticSearch 安装安装前准备安装JDK7及以上版本(这里不再讲述JDK安装步骤)下载ElasticSearch安装包,点击 获取elasticsearch-2.1.1.tar.gz安装包(https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.…

CommonJS规范

概述 Node应用由模块组成,采用CommonJS模块规范。 根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。转载于:https://www.cnblogs.com/happy1992…

java技术_2020年最流行的Java开发技术

点击上方“千锋教育”后台回复「 Java 」,领取视频学习教程在本文中,我们将以编程界最常用的编程语言Java为例,分享最为主流的技术与工具。Java几乎无处不在,无论在智能手机、台式机、游戏设备还是科学超级计算机上,处…

一个小码农对嵌入式的理解

今年毕业刚工作半年,稍微写一下自己的见解。嵌入式工程师简直就是硬件工程师与软件工程师的合体!别问我是哪一类软件工程师,反正不是前端、后端、APP、测试、运维。也别问我是什么硬件工程师,电源、单片机、高频、通信……你会做你…

mysql cluster linux_【完美】Mysql-cluster数据库集群搭建(linux)

介绍《Mysql-cluster数据库集群介绍》安装系统:Linux CentOS7.4查看是否安装mysqlrpm -qa | grep mysql普通删除rpm -e mysql强力删除rpm -e --nodeps mysql通过wget安装wget https://dev.mysql.com/get/Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.8-linux…

洛谷P1901 发射站

P1901 发射站 245通过468提交题目提供者该用户不存在标签NOI导刊云端↑难度普及/提高-时空限制1s / 128MB提交 讨论 题解 最新讨论更多讨论 大神路过的看一下输入后面为什么带空格。有人说是单调队列,但不明明…题目描述 某地有 N 个能量发射站排成一行&#xf…

gx works2 存储器空间或桌面堆栈不足_静态体验奇瑞艾瑞泽GX冠军版,细节做工很精湛...

奇瑞艾瑞泽GX冠军版车型正式上市。编辑近日趁着区域上市的机会,对其进行了静态体验。这车怎么样?分几个方面来看看外观方面,运动范儿十足,看着就年轻,一副活力四射的样子。得益于fastback极速凌动的设计元素&#xff0…

我这几年呆的这几个公司

之前发的丰富的经历我12年硕士毕业,历经华为,某芯片原厂外企,某芯片原厂国企,某手机公司,最后来到大疆,可以说是一个跳槽小能手,因为具有多家大企业的工作经历,我觉得谈下自己在各个…

mysql 主键 最佳实践_Spring Data Jpa + MySQL IDENTITY 主键下批量插入最佳实践

Spring Data Jpa 虽然可以使用参数调整批量插入,但是仅限于主键策略不是 IDENTITY 的情况下,对于习惯了使用 IDENTITY 的 MySQL 选手来说,批量插入数据直接就悲剧了。幸好我们还有 JdbcTemplate 这个利器,我们使用 Spring Data Jp…

nsoutlineview 搜索_阿里巴巴搜索推荐广告三位一体的在线服务体系

最近在工作中大量使用到了淘系的在线分发服务体系,可以快速高效的实现个性化内容分发,其技术架构的概览在这里分享给大家。AIOS(Artificial Intelligence Online Serving)是阿里巴巴集个性化搜索、推荐、广告三位一体的在线服务平台。在大型互联网公司里…

为了生活

前几天,我刚刚满30岁,30岁的那天,过得很深刻,高烧了40度,每次发烧我都没有去医院,这次也一样,潜意识里面觉得它一定会来,潜意识里面也知道它一定会走,不管是40度还是45度…

深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...

手机大师智能管家app:针对各种手机垃圾快速在线清除的软件,利用这款软件可以快速的清除各种不同的手机垃圾,而且还可以一键在线加速,更好的享受手机加速带来的便捷,同时针对各种文件清理也更加的简单,让你更…

小米19999

以前没有钱买小米现在也是,没有钱买小米19999的小米可能会比较贵但是看完这几个动图再决定要不要切肾毕竟肾只有一个消息提示调节音量播放音乐玩游戏CS通知栏充电好像有几次文章都说明了我有好多好多朋友在做手机所以我对手机其实没有多大新鲜感不是因为贵了就买而是…

Maven配置项目依赖使用本地仓库的方法汇总

Maven配置项目使用本地仓库有以下方式实现&#xff1a; 1、类似本地仓库&#xff0c;但是属于本地依赖&#xff0c;比如某个JAR包是引用第三方的&#xff0c;直接放在了项目的lib文件夹&#xff0c;那么此时可以如下配置项目的POM&#xff1a; <dependency><groupId&g…

html5+css3第一次作业_“台风爷爷,让我作业飞走!”南京小学生写的诗都这么逆天了?...

小学生的脑洞能有多大&#xff1f;看看他们写的诗就知道了&#xff01;最近&#xff0c;南京游府西街小学四年(6)班孩子们的语文作业火了&#xff0c;一个个神句让老师都不得不服气。赶紧戳图来看↓↓↓语文老师严杏村介绍&#xff0c;原本的作业是抄写儿童现代诗&#xff0c;但…

小心内存对齐

什么是内存对齐&#xff1f;CPU在读取内存地址的时候&#xff0c;一定按照一定的偏移量去读取&#xff0c;不知道你发现了没有&#xff0c;我们没有看到一个变量的大小是 3 个字节的&#xff0c;都是 1 个字节&#xff0c;2个字节&#xff0c;4个字节&#xff0c;8个字节&#…

mysql为什么不驼峰_为什么不用驼峰命名创建表名和字段?

其实&#xff0c;这是一种规范&#xff0c;而不是一种规则。所以你使用驼峰来命名也是可以的&#xff0c;但是我们要避免用驼峰来命名。不只是数据库&#xff0c;就是平常的程序也是&#xff0c;因为&#xff1a;MYSQL 5.7 FEATURES. THIS MANUAL DESCRIBES FEATURES THAT ARE …