自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 MySQL调优(十三)-基于Amoeba实现读写分离

一、读写分离方案对比目前要实现mysql的主从读写分离,主要有以下几种方案,做个简单对比:1、 通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码。2、 通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开发跟不上节奏,而写没有完美的现成的脚本,因此导致用于生产环境的话风险比较大,据网上很多人说mysql-proxy的性能不高。3、 自己开发接口实现,这种方案门槛高,开发成本高,不是一般的小公司能承担得

2020-10-10 11:47:39 197

原创 MySQL调优(十二)-基于mysql-proxy实现读写分离

一、读写分离简介MySQL读写分离基本原理是让master数据库处理写操作,slave数据库处理读操作;master将写操作的变更同步到各个slave节点,从而提高系统性能。MySQL读写分离能提高系统性能的原因在于:1、物理服务器增加,机器处理能力提升。拿硬件换性能。2、主从只负责各自的读和写,极大程度缓解X锁和S锁争用。3、slave可以配置myiasm引擎,提升查询性能以及节约系统开销。4、master直接写是并发的,slave通过主库发送来的binlog恢复数据是异步。5、slave可

2020-10-10 11:14:35 204

原创 MySQL调优(十一)-什么是主从复制?MySQL如何实现主从复制?

一、为什么需要主从复制读写分离:在复杂的系统中,有一句sql语句需要锁表,导致暂时不能使用读服务,就会影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样即使主库出现锁表的情景,通过读从库也可以保证业务的正常运作。做数据的热备。架构的扩展:业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问频率,提供单个节点的I/O性能。二、什么是MySQLl的主从复制MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或者多个从节点;默认采

2020-10-09 17:44:37 261

原创 MySQL调优(十)-服务器参数设置

generalcharacterconnectionlogcacheINNDB

2020-09-30 17:59:50 126

原创 MySQL调优(九)-分区表

mysql 非常重要的特点:分区表,思想:分而治之对于用户而言,分区表是一个独立的逻辑表,但是底层是由多个物理子表组成。分区表对于用户而言是一个完全封装底层实现的黑盒子,对用户而言是透明的,从文件系统中可以看到多个使用#分隔命名的表文件。mysql在创建表时使用partition by子句定义每个分区存放的数据,在执行查询的时候,优化器会根据分区定义过滤那些没有我们需要数据的分区,这样查询就无须扫描所有分区。分区的主要目的是将数据安好一个较粗的力度分在不同的表中,这样可以将相关的数据存放在一起,而不需

2020-09-30 17:56:01 406

原创 MySQL调优(八)-查询优化

在编写快速的查询之前,需要清楚一点,真正重要的是响应时间,而且要知道在整个SQL语句的执行过程中每个步骤都花费了多长时间,要知道哪些步骤是拖垮执行效率的关键步骤,想要做到这点,必须要知道查询的生命周期,然后进行优化,不同的应用场景有不同的优化方式,不能一概而论,具体情况具体分析;下面主要从sql 查询诊断,数据访问优化,执行过程优化,特定类型的查询优化几个维度了解MySQL的查询优化过程:一、Query Profilerquery profiler 是一个使用非常方便的 Query 诊断分析工具:使

2020-09-30 17:38:25 195

原创 MySQL调优(七)-索引优化实战细节

本文从索引优化的实际优化细节和实战案例了解如果利用索引进行优化,话不多少,直入主题:一、实际优化细节1)索引列查询时尽量使用准确值2)尽量使用主键查询、因为主键索引不会触发回表操作、主键索引为聚集索引索引中存储索引行数据。3)使用前缀索引截取某列的前几个字节,作为索引,前提是截取的这个部分数不能是重复的,如果是重复的和全列扫描没区别;基数:某列去重之后的数量,值越小效率越高select count(distinct city) from citydemo;4)使用索引扫描来排序,ord

2020-09-30 17:05:56 195

原创 MySQL调优(六)-索引优化不能不了解的基本知识

MySQL的索引优化是我们在日常工作中使用相对较多的优化方式,但也不能盲目的创建索引,使用不当的可能适得其反。本文从索引的基本知识到各种索引的使用场景了解MySQL的索引优化。一、环境准备索引优化之前我们需要将MySQL官方的sakila数据库安装到本地:ZIP格式:http://downloads.mysql.com/docs/sakila-db.ziptar格式 http://downloads.mysql.com/docs/sakila-db.tar.gz官方文档 [http://dev.m

2020-09-30 16:51:08 152

原创 MySQL调优(五)-执行计划

在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。执行计划中包含的信息一、idselect查询的序列号,包含一组数字,表示查询中执行select子句或者操作表的顺序。id号分为三种情况:1、如果id相同,那么执行顺序从上到下。2、如果id不同,如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行。3、id相

2020-09-30 16:12:08 91

原创 MySQL调优(四)-性能监控

在MySQL的日常使用中我们可以通过以下这些工具对其进行性能监控,从而有正对性的进行优化:1.show profile2.performance schema3.show processlist一. show profile使用show profile查看sql语句执行时间及资源消耗:set profiling=1; -- 开启SQL语句剖析功能。0或OFF表示关闭(默认模式)。1或ON表示开启set profiling_history_size = 15 -- 设置保留profiling的数

2020-09-28 22:30:04 1211

原创 MySQL调优(三)-MySQL底层数据结构和索引系统

上一篇文章(MySQL底层架构及日志类型)我们了解了MySQL的底层架构图和日志类型以及数据的更新流程;本文我们将进一步了解MySQL的数据结构和索引系统。一、MySQL的数据结构为什么MySQL的索引格式不用hash表、二叉树或者红黑树而是B树?hash表的索引格式:利用hash存储的话需要将所有的数据文件添加到内存,比较耗费内存空间;如果所有的查询都是等值查询,那么hash确实很快,但是企业或者实际工作环境中范围查找的数据更多,而hash不太适合范围查询。二叉树和红黑树的索引格式:由

2020-09-28 22:14:54 104

原创 MySQL调优(二)-MySQL底层架构及日志类型

本文将从以下几个方面和大家一起学习MySQL的实现原理:MySQL的基本架构图MySQL的日志类型MySQL的数据更新流程MySQL的数据结构MySQL的索引系统一、MySQL的基本架构图1.1 连接器连接器负责跟客户端建立连接,获取权限、维持和管理连接;连接分为长连接和短连接两种:长连接:推荐使用,但是要周期性的断开长连接。1.2 查询缓存当执行查询语句的时候,会先去查询缓存中查看结果,之前执行 过的sql语句及其结果可能以key-value的形式存储在缓存中,如果能找到则直接

2020-09-28 18:02:35 322

原创 MySQL调优(一)-CentOS7安装MySQL

CentOS7 安装MySQL5.7# CentOS-Base.repo文件备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo # 执行更换yum源的命令http://mirrors.aliyun.com/repo/Centos-6.repo # 更新本地缓存yum clean allyum makec

2020-09-28 16:13:45 133

原创 Java多线程高并发之ThreadPool

前边我们讲述了:Java多线程高并发之基础概念篇、Java多线程高并发之详解JUC同步工具分别从以下几个方面了解线程的概念及如何使用:1、线程是什么?为什么需要多线程?Java如何实现多线程?2、Java对多线程的基础操作:线程的状态扭转,线程的创建、终止、中断、等待和通知、挂起和执行、等待结束和谦让,synchronized实现原理及volatile和synchronized关键字在多线程环境下的作用及如何使用。3、多线程的协作——同步控制工具:ReentrantLock可重入锁:什么情况下可

2020-09-27 18:03:02 233

原创 如何度量一段代码的性能?选择性能最佳的实现方式?JMH帮你搞定!

什么是JMH**JMH(Java Microbenchmark Harness)**是用于代码微基准测试的工具套件,主要是基于方法层面的基准测试,精度可以达到纳秒级。该工具是由 Oracle 内部实现 JIT 的大牛们编写的,他们应该比任何人都了解 JIT 以及 JVM 对于基准测试的影响。官网: http://openjdk.java.net/projects/code-tools/jmh/当你定位到热点方法,希望进一步优化方法性能的时候,就可以使用 JMH 对优化的结果进行量化的分析。JMH 比

2020-09-27 14:10:00 324

原创 Java多线程高并发之ThreadLocal详解

在java多线程编程中,ThreadLocal是一个经常被大家提及的知识点,比如ThreadLocal的作用是什么?常用的使用场景有哪些?实现原理是什么等等,只有彻底理解透彻,才能游刃有余地应对,本篇文章就从这几个方面分析理解ThreadLocal:1、ThreadLocal是什么2、ThreadLocal的作用是什么3、ThreadLocal源码分析4、ThreadLocal内存泄漏问题一、ThreadLocal是什么ThreadLoal 变量,线程局部变量,可以这样理解:里面的对象是线程独

2020-09-17 17:38:05 775

原创 Java多线程高并发之详解JUC同步工具

1. ReentrantLock可重入锁(锁同一个对象才有可重入的概念)通过以下代码段来理解:public class TestReentrantLock { Lock lock = new ReentrantLock(); void m1() { try { lock.lock(); //synchronized(this) for (int i = 0; i < 10; i++) { TimeUnit.SECONDS.sleep(1); System.out

2020-09-16 18:23:29 259

原创 Java多线程高并发之基础概念篇

一. 基础概念什么是线程?和进程的区别?一个程序相当于一个进程,而这个程序中不同的执行路径就是线程。启动线程的几种方式1:Thread 2: Runnable 3:Executors.newCachedThrad创建线程的简单示例:public class T02_HowToCreateThread { static class MyThread extends Thread { @Override public void run() {

2020-09-16 17:50:03 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除