1.MySQL架构介绍

字符集、权限

修改整mysql的字符集

linux 下:

vim /etc/my.cnf

在最后加上中文字符集配置

character_set_server=utf8

重启mysql服务即可

修改成功创建的数据库或表的字符集

对于已经创建好的数据库或数据表进行修改字符集

  • 修改数据库的字符集

    alter database mydb character set 'utf8';

  • 修改数据表的字符集

    alter table mytbl convert to character set 'utf8';

创建用户及后续权限修改

创建用户

create user zhang3 identified by '123456'

表示创建名称为zhang3,密码设置为123546;

select host,user,authentication_string from user;查看用户表,其中host字段下的localhost代表仅可在本机进行登陆,%代表可进行远程登陆。

修改用户密码

updata mysql.user set password('123456') where user = 'li4';
flush pivileges;
-- 所有MySQL系统表的修改,必须使用此命令刷新权限后才能生效

修改权限

grant 权限1,权限2,。。。 on 数据库.表名称 to 用户名@用户地址 indentified by '连接口令';

例:

grand select,insert,delete,drop on atguigudb.* to li4@localhost;
-- 给li4用户本地命令行下,授权atguigudb这个库下所有表的增删改查的权限。

grand all privileges on *.* to root@'%' identified by '123456';
-- 授予通过网络方式登陆的root用户,对所有表的所有权限,密码设置为123456.

刷新MySQL的系统权限相关表

flush pivileges;

使用场景:当我们直接使用DML语句修改系统权限表(mysql.user、mysql.db、mysql.tables_priv、mysql.columns_priv)时,内存中的权限数组是不会同步更新的,此时就需要使用flush privileges来更新内存权限数据。

一些杂项配置

  • group by 使用原则:select 后面只能放函数和group by 后的字段

    select name,dept,Max(age) from mytbl2 group by dept limit 0 ,100

    • mysql5.5会正常显示分组中最大年龄的字段,但name字段是第一条数据的。
    • mysql5.7 会报错,错误代码1055,sql_mode = only_full_group_by

MySQL的逻辑架构

由客户端发送链接数据库的请求,到达Mysql服务端中,先访问连接池(connection pool);第二步,访问缓存(读)和缓冲(写)(caches&Buffers),如果访问的数据在缓存中,则直接返回访问结果;如果没有,那么将访问接口、之后进入解析器、优化器(在不改变查询结果的前提下,调整sql语句的顺序,生成执行计划)对复杂sql进行解析和优化;最后到达存储引擎完成具体的查询工作,得到结果后返回给客户端的同时,会向缓存中存储一份。

sql语句的执行顺序

优化器的作用:在不改变查询结果的前提下,调整sql的执行顺序。

-- mysql的标准语法
select Distinct(去重)
	< select_list >
from
	<left_table > <join_type>
join <right_table> on <join_condition>
where
	< where_condition >
group by
	<group_by_list>
Having
	<having_congdition>
order by
	< order_by_condition >
limit <limit_number >

MySQL的存储引擎

查看mysql的存储引擎show engines;

MyISAM 和 InnoDB

对比项MyISANMInnoDB
外键×
事务×
行表锁表锁,即使操作一条记录也会锁住整个表
不适合高并发的操作
行锁,操作时只锁某一行,不对其他行产生影响。但行锁会出现死锁情况。
适合高并发的操作
缓存只缓存索引,不缓存真是数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能由决定性的影响。
关注点节省资源、消耗少、简单业务并发写、事务、更大资源

mysql系统自带的系统表(不会出现高并发、节省资源)使用MyISAM。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值