mysql数据库

MySQL数据库优化

梦想的初衷 提交于 2020-01-13 13:46:59
数据库优化的目的 1.避免出现页面访问错误 由于数据库连接 timeout 产生页面5xx错误 由于慢查询造成页面无法加载 由于阻塞造成数据无法提交 2.增加数据库的稳定性 很多数据库问题都是由低效的查询引起的 3.优化用户体验 流畅的页面访问速度 良好的网站功能体验 MySQL数据库优化 上图是数据库优化的金字塔结构。可以看出,SQL及索引优化位于金字塔的最低层,是数据库优化的基础,成本最低,效果却最好。 一 SQL语句优化 找出有问题的SQL 1.1 使用MySQL慢查询日志对低效率的SQL进行监控 1)查询是否开启了慢查询日志 show variables like 'slow_query_log'; 2)设置记录未使用索引的查询 set global log_queries_not_using_indexes=on; 3)设置慢查询时间 set global long_query_time=0.1; 注:直接修改 global 的 long_query_time 在当前窗口是不生效的,在新打开的窗口才有效果。如果想让当前窗口生效,在设置时不用加 global 关键字。 4)设置慢查询日志地址 set global slow_query_log_file='/home/log/mysql/mysql-query.log'; 5)开启慢查询日志 set global slow

mysql-主从复制原理浅析

蓝咒 提交于 2020-01-13 12:59:43
一.MySQL主从原理  1.众所周知,MySQL是一个开放源码的小型关联式数据库管理系统,由于其体积小、速度快、成本低。源码开放等这些优点   被许多中小型网站使用。但随着访问量的不断增加,Mysql数据库压力不断增加,需要对mysql进行优化和架构改造,可以使用   高可用、主从复制、读写分离来拆分库表进行优化,接下来简单理解一下mysql的主从复制原理:        MySQL数据库主从复制原理:   Mysql主从同步其实是一个异步复制的过程,要实现复制首先需要在master上开启bin-log日志功能,整个过程需要开启三个线程:   分别是master的IO线程,slave开启IO线程和SQL线程。   1).在从服务器上执行slave start,从服务器上的IO线程会通过授权用户连接上master,并请求master从指定的文件和位置之后发送bin-log日志内容。   2).master服务器收到来自slave服务器的IO线程的请求后,master服务器上的IO线程根据slave服务器发送的指定的bin-log日志之后的内容,然后返回给slave端的IO线程。    (返回的信息中除了bin-log日志内容外,还有本次返回日志内容后在master服务端的新的binlog文件名以及在binlog中的下一个指定更新位置)   3).slave的Io线程接收到信息后

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could

空扰寡人 提交于 2020-01-13 12:19:13
问题描述: springboot版本 2.1.1 pom.xml配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> application.properties spring.datasource.hikari.jdbc-url=jdbc:mysql://127.0.0.1:3306/bootdb?serverTimezone=GMT%2B8&useUnicode=true&&characterEncoding=UTF-8 spring.datasource.hikari.username=root

Hive metastore三种配置方式

五迷三道 提交于 2020-01-13 11:58:37
一本地derby 二本地mysql 三远端mysql 服务端配置文件 客户端配置文件 Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。远端存储比较适合生产环境。Hive官方wiki详细介绍了这三种方式,链接为: Hive Metastore 。 一、本地 derby 这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可 <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="configuration.xsl" ?> <configuration> <property> <name> javax.jdo.option.ConnectionURL </name> <value> jdbc:derby:;databaseName=metastore_db;create=true </value> </property> 11. <property> 12. <name> javax.jdo.option.ConnectionDriverName </name> 13. <value> org.apache.derby.jdbc.EmbeddedDriver </value> 14. </property> 15. 16. <property> 17. <name

CentOS 常用命令大全

孤街醉人 提交于 2020-01-13 11:58:07
下面,就给大家介绍这些CentOS常用命令。 一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo [root@localhost /]# grep "CPU" /proc/cpuinfo model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz model name : Intel(R) Pentium(R) Dual CPU E2180 @ 2.00GHz 如果觉得需要看的更加舒服 grep "model name" /proc/cpuinfo | cut -f2 -d: 二:使用CentOS常用命令查看内存 grep MemTotal /proc/meminfo grep MemTotal /proc/meminfo | cut -f2 -d: free -m |grep "Mem" | awk '{print $2}' 三:使用CentOS常用命令查看cpu是32位还是64位 查看CPU位数(32 or 64) getconf LONG_BIT 四:使用CentOS常用命令查看当前linux的版本 more /etc/redhat-release cat /etc/redhat

mysql 意向锁的作用

余生颓废 提交于 2020-01-13 11:53:25
直接copy知乎上的内容 https://www.zhihu.com/question/51513268 作者:尹发条地精 链接:https://www.zhihu.com/question/51513268/answer/127777478 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 ①在mysql中有表锁, LOCK TABLE my_tabl_name READ; 用读锁锁表,会阻塞其他事务修改表数据。 LOCK TABLE my_table_name WRITe; 用写锁锁表,会阻塞其他事务读和写。 ②Innodb引擎又支持行锁,行锁分为 共享锁,一个事务对一行的共享只读锁。 排它锁,一个事务对一行的排他读写锁。 ③这两中类型的锁共存的问题 考虑这个例子: 事务A锁住了表中的 一行 ,让这一行只能读,不能写。 之后,事务B申请 整个表 的写锁。 如果事务B申请成功,那么理论上它就能修改表中的任意一行,这与A持有的行锁是冲突的。 数据库需要避免这种冲突,就是说要让B的申请被阻塞,直到A释放了行锁。 数据库要怎么判断这个冲突呢? step1:判断表是否已被其他事务用表锁锁表 step2:判断表中的每一行是否已被行锁锁住。 注意step2,这样的判断方法效率实在不高,因为需要遍历整个表。 于是就有了意向锁。 在意向锁存在的情况下

MySQL数据库(三)简介

夙愿已清 提交于 2020-01-13 11:19:53
前提要述:参考书籍《MySQL必知必会》 2.1 MySQL简介 2.1.1 什么是MySQL MySQL是一种关系数据库管理系统。负责数据库中数据的存储,检索,管理和处理。 2.1.2 MySQL的优点 成本低——MySQL是开源的,一般可以免费使用。 性能——MySQL执行快。 可信赖,体积小。 简单——MySQL很容易安装和使用。 2.1.3 客户机-服务器软件 DBMS可分为两类: 基于共享文件系统的DBMS ,如Microsoft Access和FileMaker。用于桌面用途,通常不用于高端或更关键的应用。 基于客户机-服务器的DBMS ,如MySQL,Oracle以及Microsoft SQL Server等数据库。 客户机-服务器应用分为两个不同的部分: 服务器部分是负责所有数据访问和处理的一个软件,该软件通常运行在称为数据库服务器的计算机上; 客户机是与用户打交道的软件。 例如:用户请求一个按字母顺序列出的产品表,则客户机软件通过网络提交该请求给服务器软件。服务器软件处理该请求,根据需要过滤,丢弃和排序数据;然后把结果送回到你的客户机软件上给你看。 像服务器这些操作对于用户是透明的,也就是不需要了解如何过滤如何丢弃如何排序,用户只需看到结果。多数网络的建立使用用户不具有对数据的访问权,甚至不具有对存储数据的驱动器的访问权。 让服务器的活动对用户透明化的意义

Mysql索引优化分析-第一篇

巧了我就是萌 提交于 2020-01-13 10:20:25
1.性能下降SQL慢 执行时间长 等待时间长 查询语句写的烂 索引失效(单值,复合) 关联查询太多join(设计缺陷或不得已的需求) 服务器调优及各个参数设置(缓冲\线程数等) 2.常见通用的join查询 2.1SQL执行顺序 2.1.1手写 2.1.2机读 2.1.3总结 2.2Join图 2.3建表SQL 2.4 7种Join 3.索引简介 3.1什么是索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 可以得到索引的本质: 索引是数据结构 可以简单理解为"排好序的快速查找数据结构"。 详解(重要): 结论: 数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以文件形式存储在硬盘上. 我们平时所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一定是二叉树)结构组织的索引。 其中聚集索引,次要索引,覆盖索引,复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈希索引(hash index)等。 3.2索引优势 类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本 通过索引列对数据进行排序

数据读写分离

谁都会走 提交于 2020-01-13 09:13:42
什么是数据读写分离 把客户端访问数据的读请求和写请求分给不同的数据库服务器处理 为什么要配置数据读写分离 分担单台服务器的工作压力 配置 程序实现:网站代码中指定不同的读写服务器 服务实现:安装提供读写分离服务的软件实现 mysql中间件 mysql-proxy mycat maxscale 配置思路: 配置MySQL主从 配置mysql代理 配置MySQL代理服务器 [ root@maxscale ] rpm -ivh maxscale-2.1.2-1.rhel.7.x86_64.rpm 文件 作用 /etc/maxscale.cnf 配置文件 /var/log/maxscale/ 日志目录 修改配置文件: [ root@maxscale ] vim /etc/maxscale.cnf 9 [ maxscale ] 10 threads = auto #设置线程数量,auto为根据CPU核心数自动设置 18 [ server1 ] #添加MySQL服务器 19 type = server 20 address = 192.168.4.51 21 port = 3306 22 protocol = MySQLBackend 23 24 [ server2 ] 25 type = server 26 address = 192.168.4.52 27 port = 3306 28

使用navicat连接mysql时10060错误

旧城冷巷雨未停 提交于 2020-01-13 09:13:11
问题描述: 在使用navicat连接mysql数据库时,出现错误:2003 - cant connect ro mysql server on xxx (10060 unknown error),如图 navicat连接mysql 10060 unknown error 解决步骤: 在服务器商的后台,配置安全组,放行数据库端口号,默认的是3306。此步骤,不同服务商操作也不同。我的腾讯云是在后台的 云服务器--->安全组中。 修改服务器主机的防火墙配置。打开宝塔--->安全,放行数据库端口号。如图 宝塔安全放行端口号 3. 修改服务器mysql数据库user表,配置为允许远程访问。如图 mysql update user set host update user set host = '%' where user = 'root'; 4.完成。 navicat连接成功 来源: CSDN 作者: 游戏乐趣 链接: https://blog.csdn.net/qq_26902237/article/details/103904229