mysql数据库

MySQL索引原理与慢查询优化

房东的猫 提交于 2020-03-06 17:59:57
索引目的 索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者w开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成? 索引原理 除了词典,生活中随处可见索引的例子,如火车站的车次表、图书的目录等。它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是我们总是通过同一种查找方式来锁定数据。 数据库也是一样,但显然要复杂许多,因为不仅面临着等值查询,还有范围查询(>、<、between、in)、模糊查询(like)、并集查询(or)等等。数据库应该选择怎么样的方式来应对所有的问题呢?我们回想字典的例子,能不能把数据分成段,然后分段查询呢?最简单的如果1000条数据,1到100分成第一段,101到200分成第二段,201到300分成第三段……这样查第250条数据,只要找第三段就可以了,一下子去除了90%的无效数据。但如果是1千万的记录呢,分成几段比较好?稍有算法基础的同学会想到搜索树,其平均复杂度是lgN,具有不错的查询性能。但这里我们忽略了一个关键的问题,复杂度模型是基于每次相同的操作成本来考虑的,数据库实现比较复杂,数据保存在磁盘上

mysql——常见函数

女生的网名这么多〃 提交于 2020-03-06 16:16:45
#进阶4:常见函数 /* 概念:类似于java中的方法,将一组逻辑语句封装在方法中,对外暴露方法名 好处:1、隐藏了实现细节。2、提高代码的重用性 调用:select 函数名(实参列表) from 表 特点: ①函数名 ②函数功能 分类: ①单行函数 如:concat、ifnull、length等 传一个值,返回一个值 ②分组函数(统计函数、聚合函数、组函数) 功能:做统计使用的 传一组值,返回一个值 */ 单行函数 一、字符函数 #length 获取参数的字节个数 SELECT LENGTH('join'); #4 SELECT LENGTH('张三丰hahaha'); #15,一个汉字占三个字节,一个字母一个字节 SHOW VARIABLES LIKE '%char%'; #显示当前系统支持的字符集 #concat 拼接字符串 SELECT CONCAT(last_name,'_',first_name) FROM employees; #upper/lower SELECT UPPER('join'); #将参数变为大写 SELECT LOWER('JOIN'); #将参数变为小写 #案例1:将姓变大写,将名变小写 SELECT CONCAT(UPPER(last_name),LOWER(first_name)) AS 姓名 FROM employees; #substr

猴子都能懂的数据库避坑指南,还说你不会?

老子叫甜甜 提交于 2020-03-06 15:08:39
前言 工作的这些年发现一个比较奇怪的现象就是身边无论是工作十多年的老兵,还是初级刚入行的程序员,在高谈阔论技术和趋势的时候都是人工智能,大数据,区块链,各种框架,语言,算法,AI,BI,CI,DI…… 等等,倒是发现很少有人关注数据库,不知道是因为数据库感觉太低端还是太低调,总是不容易被人提起 技术就是这样,不太关注的地方就不会重视,越是不被重视的地方,掉进坑里的概率就会越大,所以就在这里给大家简单聊聊在使用数据库过程中有哪些防掉坑指南,也可以对刚入行的小朋友有一个提醒的作用,万丈高楼平地起,一定要先打好基础再去考虑上层的建筑,不要舍本逐末 本章主要分以下四个小节(预计读完 5 分钟左右): 数据库为什么重要 数据库有哪些使用技巧 数据库有哪些容易掉进去的坑? 深入学习数据库的建议 数据库为什么重要 很多人在开发过程中不太关注数据库,对于表结构的设计也没什么讲究大多属于“能用就行”,但是根据作者将近十年的开发经验来看的话,只要你是从事 Web 相关领域开发你就无法避免不和数据库打交道, 在Web开发中大多功能操作本质上都是对数据库进行操作 ,不管你用是 Pythod,Java,Ruby 等语言进行 Web 开发,你其实都是在面向数据库进行编程,很多 Web 框架作者为了避免程序员接触数据库的相关知识甚至还封装了一层 ORM (Object Relational Mapping

Zabbix3.2.11源码编译安装for centos7

依然范特西╮ 提交于 2020-03-06 11:56:37
本文转载自: https://www.93bok.com 一、Linux常用开源监控系统简单介绍 cacti:存储数据能力强,报警性能差 nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中。比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警 zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警。 二、Zabbix组件功能 Server Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件。Zabbix Server是所有配置信息、统计信息和操作数据的核心存储器。 数据库存储 所有配置信息和Zabbix收集到的数据都被存储在数据库中。 Web界面 为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。 如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。 Proxy代理服务器 Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力

使用mycat做Mysql读写分离

人盡茶涼 提交于 2020-03-06 11:42:07
本文转载自: https://www.93bok.com 实验环境: Centos6.5 minimal 64位系统 服务器IP:192.168.10.22(mycat) 192.168.10.27(master) 192.168.10.29(slave) 192.168.10.21(测试客户端) 说明: 1. 安装包已经提前下载好,此文档中不再演示下载步骤 2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/ 3. 所有的服务安装路径都在/a01/apps/xxxxxxx 4. 服务器只安装了MySQL,如果不会安装,请参考之前文章 包版本: MySQL: mysql-5.7.19.tar.gz或者mysql-boost-5.7.19.tar.gz Mycat: Mycat-server-1.6.5-release-20171117203123-linux.tar JDK: jdk-8u151-linux-x64.tar.gz JDK去oracle官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Mycat官网下载: http://www.mycat.io/ MySQL读写分离的概述 Mysql作为目前世界上使用最广泛的免费数据库

MySQL Linux 下安装过程

三世轮回 提交于 2020-03-06 10:54:38
MySQL Redhat下安装 先解压源码包,然后切换到相应的目录,再参照mysql/ 目录下的INSTALL-SOURCE 文件中的”MySQL Installation Using a Source Distribution”进行安装,具体步骤如下: 解压源码包 #tar zxvf mysql-xxxxx.tar.gz #cd mysql-xxxxx 建立mysql 用户组和用户 #grep mysql /etc/group #groupadd mysql #grep mysql /etc/passwd #useradd mysql -g mysql -c "MySQL Server" -M -s /sbin/nologin -g:指定新增用户所属的用户组 -c:对新增用户的附加说明 -M:不建立使用者目录 -s:定义使用的SHELL,/sbin/nologin 表示用户不能登陆系统 编译 #./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all --with-plugins=all --enable-thread-safe-client --with-debug --enable-assembler

MYSQL--表分区、查看分区

我的未来我决定 提交于 2020-03-06 08:20:01
一、 mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是透明的。 MYSQL的分区主要有两种形式:水平分区和垂直分区 水平分区(HorizontalPartitioning) 这种形式的分区是对根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。 所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水平分区一定要通过某个属性列来分割。常见的比如年份,日期等。 垂直分区(VerticalPartitioning) 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应所有行。 可以用 showvariables like '%partition%'; 命令查询当前的mysql数据库版本是否支持分区。 分区的作用:数据库性能的提升和简化数据管理 在扫描操作中,mysql优化器只扫描保护数据的那个分区以减少扫描范围获得性能的提高。 分区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响,分区有系统直接管理不用手工干预。 mysql从5.1版本开始支持分区

injector

强颜欢笑 提交于 2020-03-06 07:42:39
网上的注入工具很多,大多也有比较详细的解释,但是大部分windows下的注入软件都是对自己软件的一种推荐,而且很多也不是非常的安全,对于有些破解版本来说,很可能自身会被带有木马,所以,Linux下的注入工具也是非常强大的,不过分的说,可以完全取代Windows下面的所有注入工具。我所介绍的是一款名为SQLMAP的注入工具,有感兴趣的可以去他的官网看看哦! 首先,SQLMAP是一个开放源码的渗透测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终渗透测试人员提供很多猥琐的功能,可以拖库,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令 其次,SQLMAP支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。 SQLMAP支持五种不同的注入模式: l 基于布尔的盲注,即可以根据返回页面判断条件真假的注入; l 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断; l 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中; l 联合查询注入

tars环境部署

陌路散爱 提交于 2020-03-06 07:42:14
author: headsen chen date: 2018-10-18 12:35:40 注意:依据Git上的tars搭建步骤整理而来 参考: https://max.book118.com/html/2017/0527/109698528.shtm https://github.com/TarsCloud/Tars/blob/master/Install.zh.md 环境: centos7.3-x86_64 kernel :3.10 1,依赖 yum install mpfr -y yum install gmp -y yum install *mpc* -y yum install glibc-static libstdc++-static -y yum -y install gcc gcc-c++ yum -y install autoconf automake libtool curl make g++ unzip zlib zlib-devel yum install glibc-devel -y yum install cmake -y yum install perl -y yum install -y git yum install ncurses-devel -y 2,安装gcc # 安装,下载好包并放在/mnt下面 cd /mnt tar fx gcc-6

WampServer 安装使用详解

你离开我真会死。 提交于 2020-03-06 06:26:22
WampServer集成环境的搭建、安装、使用、配置 什么是WampServer WampServer是一款由法国人开发的Apache Web服务器、PHP解释器以及MySQL数据库的整合软件包。免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。 WampServer就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。 安装 1. 下载 WampServer,官网: http://www.wampserver.com 。 如果下载慢,可以去我的 CSDN下载 2. 打开直接安装。安装完成后会出现: 意思就是让你选择默认的文件浏览器,一般它直接给你打开到了 C:\Windows 目录下,直接点 打开 就好了 3. 选择邮箱。如果你不确定可以直接点下一步 4. 至此就安装完成了。接下来是对其进行配置 配置 安装完成后,打开WampServer,会发现它是英文的。现在可以修改它的显示语言 1. 右击 右下角的 WampServer程序,选择 Language - chinese 2. 启动 WampServler有三种状态 服务器关闭状态,颜色为 红色 服务器开启,但是为离线状态,颜色为 橙色 服务器开启,在线状态,颜色为 绿色 如果服务器在离线,需要左击图标 - 切换到在线状态