本文主要给大家简单讲讲mysql有哪些比较高级的用法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql有哪些比较高级的用法这篇文章可以给大家带来一些实际帮助又是;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
1, mysql的配置文件。
在windows中是my.ini文件:
1), log-bin:表示主从复制的日志文件,用于主从复制。
2),日志错误=癝O3JFYNN8EW6GMO.err":表示错误日志。
3),服务器id=1:表示本机的序号为1 .
4), datadir=D:/mysql5.7/数据:存放数据库信息的目录,
2, mysql的架构从上到下分成四层:
1),连接层:连接处理,授权认证,相关的安全方案。
2),服务层:完成sql的优化,分析,缓存等功能。
3),引擎层:负责存储和提取数据。
4),存储层:数据存储层,主要将数据存储在文件系统之中,并完成与引擎的交互。
3, mysql引擎
1)查看使用的引擎:
显示女士或者显示
MYISAM和INNODB的比较
不支持主外键值对,支持
不支持事务;支持
表锁,不适合高并发,行锁,适合高并发
只缓存索引;缓存索引和数据,对内存要求更高
表空间小;表空间大
关注点在性能,更多情况下适合查询多的情况,关注点事务。
4, mysql性能优化下降原因
1),查询语句写的烂
2),索引失效
单值索引
创建,指数,idx_user_name,用户(名字)
复合索引
创建,指数,idx_user_name_email,用户(名称、电子邮件)
3),查询有太多的加入
4),云服务器调优及各个参数
5, mysql的执行顺序
机器从从开始读。
1),内连接
选择,*从,为多,一个,内连接,表B B,在A.key=B。关键。
2),左外连接
选择,*从,为多,一个,左,连接,表B B上。关键=B。关键
当b没有的,用零补全。
3),右外连接
选择,*从,为多,一个,对,加入,表B, B,,A.key=B.key
当一个没有时,用零补全
4),左外连接,去除右表部分
选择,*从,为多,一个,,剩下的加入,,表B, B,上,A.key=B。关键,,,B。关键是null
的独有,这此时b的用零补齐,所以此时b是为空的。
5),右外连接,去除左表部分
选择,*从,为多一个,对吧,加入,表b, b,在一个。关键=B。关键的地方。关键,是空
6),全连接(可以采用两者相加)联盟可以组合并去重
选择,从为多左表B加入B *,上,A.key=B。关键,联盟
(select * from为多,一,对加入表B B)
7),中心空出来
选择,从为多左表B加入B *,上,A.key=B。关键,在B。关键是零联盟
(select * from为多,一,对加入表B B,在,A.key=B。关键的地方。关键是null)
6,什么是索引
1),索引是一种数据结构,在于提高查找效率。
排好顺序的快速查找数据结构。
数据库维护着满足特定算法的数据结构,这种数据结构以
某种方式指向数据,这样可以在这些数据结构上实现高级的超找
算法,这种数据结构称为索引。
BTREE索引(没有特殊指定的情况下)
频繁删改的字段,不适合建索引。
2),优势
提高数据检索的效率,降低数据库的io成本
通过索引列对数据进行排序,降低数据排序的成本,降低了cpu的消耗
3),劣势
索引也是一张表,占磁盘空间。
更新表时要维护索引,会降更新效率。
索引只是一个提高效率的因素,建立索引需要花时间和精力。
4),单值索引,只包含一个列,一张表可以有多个单值索引。
5),唯一索引,索引列的值必须唯一,允许为空。
6),复合索引,包含多个列。
7),索引的相关操作
创建,指数,idx_user_name用户(名字)
改变,用户,添加索引,idx_user_name上(名字)
显示指数从用户
下降指数idx_user_name用户
8),索引结构
哈希索引
全文全文索引
r - tree索引
BTree索引:
7,哪些情况要创建索引:
1),主建自动建立唯一索引
2),频繁作为查询条件的字段应该创建索引
3),查询中与其他表关联的字段,外建关系建立索引。
4),频繁更新的字段,不适合创建索引
5),那里的条件里用不到的字段补创建索引。
6),单建或者组合索引的选择问题,在高并发下倾向于创建复合索引
7),查询中排序的字段,排序的字段如果按照索引去访问,将提高效率
8),查询中统计或者分组字段
8日哪些情况不需要创建索引:
1),表记录太少