mysql有哪些比较高级的用法
本文主要给大家简单讲讲MySQL有哪些比较高级的用法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql有哪些比较高级的用法这篇文章可以给大家带来一些实际帮助。
创新互联建站,专注为中小企业提供官网建设、营销型网站制作、成都响应式网站建设公司、展示型成都网站设计、网站建设等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
1、mysql的配置文件。
在windows中是my.ini文件:
1)、log-bin:表示主从复制的日志文件,用于主从复制。
2)、log-error="SO3JFYNN8EW6GMO.err":表示错误日志。
3)、server-id=1:表示本机的序号为1。
4)、datadir=D:/mysql5.7/Data:存放数据库信息的目录,
2、mysql的架构从上到下分成四层:
1)、连接层:连接处理,授权认证,相关的安全方案。
2)、服务层:完成sql的优化,分析,缓存等功能。
3)、引擎层:负责存储和提取数据。
4)、存储层:数据存储层,主要将数据存储在文件系统之中,并完成与引擎的交互。
3、mysql引擎
1)查看使用的引擎:
show engins或者show
MYISAM和INNODB的比较
不支持主外键值对;支持
不支持事务;支持
表锁,不适合高并发;行锁,适合高并发
只缓存索引;缓存索引和数据,对内存要求更高
表空间小;表空间大
关注点在性能,更多情况下适合查询多的情况;关注点事务。
4、mysql性能优化下降原因
1)、查询语句写的烂
2)、索引失效
单值索引
create index idx_user_name on user(name)
复合索引
create index idx_user_name_email on user(name,email)
3)、查询有太多的join
4)、云服务器调优及各个参数
5、mysql的执行顺序
机器从from开始读。
1)、内连接
select *from tableA A inner join tableB B on A.key=B.key。
2)、左外连接
select *from tableA A left join tableB B on A.key= B.key
当b没有的,用null补全。
3)、右外连接
select *from tableA A right join tableB B on A.key=B.key
当a没有时,用null补全
4)、左外连接,去除右表部分
select *from tableA A left join tableB B on A.key=B.key where B.key is null
a的独有,这此时b的用null补齐,所以此时b是为空的。
5)、右外连接,去除左表部分
select *from tableA A right join tableB B on A.key = B.key where A.key is null
6)、全连接(可以采用两者相加)union 可以组合并去重
select *from tableA A left join tableB B on A.key=B.key union
(select *from tableA A right join tableB B )
7)、中心空出来
select *from tableA A left join tableB B on A.key=B.key where B.key is null union
(select *from tableA A right join tableB B on A.key=B.key where A.key is null)
6、什么是索引
1)、索引是一种数据结构,在于提高查找效率。
排好顺序的快速查找数据结构。
数据库维护着满足特定算法的数据结构,这种数据结构以
某种方式指向数据,这样可以在这些数据结构上实现高级的超找
算法,这种数据结构称为索引。
BTREE索引(没有特殊指定的情况下)
频繁删改的字段,不适合建索引。
2)、优势
提高数据检索的效率,降低数据库的io成本
通过索引列对数据进行 排序,降低数据排序的成本,降低了cpu的消耗
3)、劣势
索引也是一张表,占磁盘空间。
更新表时要维护索引,会降更新效率。
索引只是一个提高效率的因素,建立索引需要花时间和精力。
4)、单值索引,只包含一个列,一张表可以有多个单值索引。
5)、唯一索引,索引列的值必须唯一,允许为空。
6)、复合索引,包含多个列。
7)、索引的相关操作
create index idx_user_name on user(name)
alter user add index idx_user_name on (name)
show index from user
drop index idx_user_name on user
8)、索引结构
Hash索引
full-text全文索引
R-Tree 索引
BTree索引 :
7、哪些情况要创建索引:
1)、主建自动建立唯一索引
2)、频繁作为查询条件的字段应该创建索引
3)、查询中与其他表关联的字段,外建关系建立索引。
4)、频繁更新的字段,不适合创建索引
5)、where条件里用不到的字段补创建索引。
6)、单建或者组合索引的选择问题,在高并发下倾向于创建复合索引
7)、查询中排序的字段,排序的字段如果按照索引去访问,将提高效率
8)、查询中统计或者分组字段
8、哪些情况不需要创建索引:
1)、表记录太少
2)、经常增删的表
3)、数据重复且分布平均的字段。
9、性能分析:
mysql query optimizer
mysql有哪些比较高级的用法就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。
本文名称:mysql有哪些比较高级的用法
文章出自:http://cdiso.cn/article/pidgsd.html