mysql扩展使用_mysql的扩展应用
sql优化:
1、硬件优化
sql服务器的机械硬盘换成固态硬盘,mysql升级更高的版本
2、软件优化
设计数据库符合三范式(3nf)标准
建立有效的索引
编写查询语句时,用什么字段拿什么字段
中间层优化,把常用的不经常改变的数据放到缓存里,直接去缓存拿数据,缓存中没有再去数据库拿
防sql注入:
1、对输入的数据进行过滤,对发送到数据库的数据进行转义
if(!get_magic_quotes_gpc()){ //判断是否开启
$newStr=addslashes($str); //然后用addslashes函数过滤
}
2、过滤一些常见的数据库操作关键字
$post = implode(',',$_POST);
preg_match('/select|insert|update|delete|and|or|create|alter|count|union|into|
load_file|outfile|'|''/i',$post) // 进行过滤
3、使用pdo预处理机制
跨站脚本的过滤:
RemoveXSS($post['name']);(RemoveXss是自己封装的函数)
join(连接):
select a.id,a.name,a.age,b.sex from 表A a LEFT JOIN 表B b on a.id = b.typeId;
说明:LEFT JOIN 左连接,除了获取符合的数据外,还获取左表的全部数据(字段的值不重复,若重复,后面的值覆盖前面的值),若右表无对应数据,则该字段的值显示为NULL
时间搜索:
?>
mysql的悲观锁和乐观锁:
乐观锁:比较适合读取操作比较频繁的场景,如果出现大量的写入操作,数据发生冲突的可能性就会增大,为了保证数据的一致性,应用层需要不断的重新获取数据,这样会增加大量的查询操作,降低了系统的吞吐量。
悲观锁:比较适合写入操作比较频繁的场景,如果出现大量的读取操作,每次读取的时候都会进行加锁,这样会增加大量的锁的开销,降低了系统的吞吐量。
mysql的索引:
索引类型:
normal:表示普通索引
unique:表示唯一索引,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full textl: 表示全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。
总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。
索引方法(Innodb和MyISAM默认的索引是Btree索引):
HASH(用于对等比较,如"="和" <=>") //<=> 安全的比对 ,用与对null值比较,语义类似is null()
BTREE(用于非对等比较,比如范围查询)>,>=,
复合索引:
两个或更多个列以上的索引被称作复合索引。
利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。
复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。
所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。
注意:
复合索引建立之后,索引列中的第一个字段索引就可以取消设置了;因为单独查询索引字段时,SQL会直接走复合索引而不会走独立索引
举例1:
复合索引字段 index 【status,name,price,type,time】
where条件 status = 1
他也可以走这个index索引(因为status字段在索引的的首位)
举例2:
复合索引字段 index 【status,name,price,type,time】
where条件 status = 1 and time > 1555555555
他也可以走这个index索引(按照字段顺序能找到对应字段)
举例3:
复合索引字段 index 【status,name,price,type,time】
where条件 status = 1 and price> 10.99 and name = 'zhangsan'
他不走这个index索引(没有按照字段的顺序)
总结:
如果复合索引使用效果不好(速度是否有提升,是否影响其他索引条件),设置独立索引,反之亦然
mysql语句的优化分析(explain):
mysql的where计算次序优先级:
非(!)>与(&&)>或(||)
解决方法:使用圆括号明确地分组相应的操作符,就不会走优先级
(id >1 or name='zhangsan')and sex='nan'
提示:
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符,不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此;使用圆括号没有什么坏处,它能消除歧义。
mysql的正则表达式:
where name REGEXP'1000|2000'
语句中使用了正则表达式1000|2000,|为正则表达式的OR操作符,它表示匹配其中之一,因此1000和2000都匹配并返回。
mysql的慢查询日志:
什么是慢查询?
答:在MySQL数据库中慢查询是在日志中记录执行速度慢的SQL语句,这个功能需要被开启才能被使用。在Windows系统下的MySQL 配置文件一般是是my.ini找到[mysqld]下面加上
代码如下:
slow_query_log=on
slow_query_log_file = D:/phpstudy_pro/Extensions/MySQL8.0.12/data/slow_man.log
long_query_time = 1
2. 在Linux系统下的MySQL
配置文件一般是是my.cnf找到[mysqld]下面加上
代码如下:
slow_query_log=on
slow_query_log_file = /var/lib/mysql/logs/slow.log
long_query_time = 1
说明:long_query_time是指执行超过多久的SQL会被日志记录下来,这里是10 秒;
log-slow-queries设置把日志写在那里(例子中慢查询日志会写到文件/var/lib/mysql/mysql-slow.log中),为空的时候,
系统会给慢查询日志赋予主机名,并加上slow.log。如果设置了参数log-long-format ,那么所有没有使用索引的查询也将被记录。
这个日志对性能的影响不大(所有的查询耗时都很小的情况下),并且强调了那些需要在意的查询(从结果中可以分析出那些查询SQL语句需要优化或者那些索引需要添加或者那些索引没有失效了)。
mysql扩展使用_mysql的扩展应用相关推荐
- centos 7 单独安装mysql和mysqli和pdo_mysql扩展
2019独角兽企业重金招聘Python工程师标准>>> 一.mysql扩展 下载地址:http://git.php.net/?p=pecl/database/mysql.git;a= ...
- mycat实现mysql大表自动水平扩展
1.mycat是一种数据库中间件,详细信息访问官网http://www.mycat.org.cn/ 2.架构图 从上图可以看出:原来架构单服务器单库单表向多服务器多库多表转换 这样做的好处是: 解决单 ...
- mysql checksum用法_MySQL checksum理解_mysql
mysql checksum了解 在主从复制中Checksum常常需要对某些重要的表进行一致性检查. Checksum Table在逻辑备份时候前后是否可以用于验证数据一致性.扩展一下发现有一些有趣的 ...
- php补充 扩展,php补充安装扩展支持
一般我们编译安装php时,不知道到底要安装哪些扩展,即使想全部安装,也不能将所有扩展的扩展名都列举出来,所以一般是需要哪些扩展就安装哪些扩展,待后续需要某扩展时再补充编译进去 如果我们运行的php版本 ...
- mysql dba 视频_MySQL DBA入门到高级系列视频教程 [高清完整版]
其他教程 当前位置:主页 > 编程教程 > 其他教程 > MySQL DBA入门到高级系列视频教程 [高清完整版] MySQL DBA入门到高级系列视频教程 [高清完整版] 教程大小 ...
- mysql select 进阶_MySQL进阶_SELECT篇(一)
MySQL中SELECT语句的基本语法是: SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DI ...
- mysql fulltext类型_mysql索引类型:FULLTEXT、NORMAL、SPATIAL、UNIQUE的详细介绍(转)
Normal 普通索引 表示普通索引,大多数情况下都可以使用 Unique 唯一索引 表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique 约束唯一标识 ...
- mysql fabric搭建_MySQL Fabric 安装部署
MySQL Fabric 是一个用于管理 MySQL 服务器群的可扩展框架.该框架实现了两个特性 - 高可用性 (HA) 以及使用数据分片的横向扩展.这两个特性既可以单独使用,也可以结合使用. 环境: ...
- mysql fulltext 排序_mysql索引类型:FULLTEXT、NORMAL、SPATIAL、UNIQUE的区别
Normal 普通索引 > 表示普通索引,大多数情况下都可以使用 Unique 唯一索引 > 表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为uni ...
最新文章
- 这是一个不完整的详细Java多线程,但对于初学者足够了,相信我,你会爱上她的
- Linux用init命令关机、重启、切换模式
- mysql预处理 更新_MySQL 预处理方法更新删除-2018年04月27日00时59分
- ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
- android 语音编码,android – 如何将录制的语音编码为ogg vorbis?
- 计算机专业相关的毕业设计论文合集免费下载
- matlab画直方图下标,matlab画二维数据直方图/画二维概率分布
- C语言宏定义##连接符和#符的使用
- 2017.10.6 Java命名规范及使用情况
- Java 基础类型int 与 Integer
- Android音视频开发之-WebRTC技术实践
- 将正方形图片转换成圆形图片
- 【一起入门NLP】中科院自然语言处理作业二:中英文语料训练CBOW模型获得词向量(pytorch实现)【代码+报告】
- 【学习笔记】Python_Faker,制造测试数据的第三方库,创建姓名、手机、电话、浏览器头、时间、地址等
- 斯隆论社会责任:德鲁克日志之四月二十五日
- html图片底部显示,html – 将背景图像保持在底部
- NXP SJA1124 spi转lin芯片驱动
- LIBSVM实验-在matlab中使用heart_scale数据集
- python作中国地图背景气泡图_excel怎么制作中国地图背景效果的气泡图?
- ubuntu 16.04搭建OpenGrok