美文网首页
mysql高级:视图、事务、索引

mysql高级:视图、事务、索引

作者: 聚财学院 | 来源:发表于2018-10-31 12:52 被阅读0次

    # mysql高级:视图、事务、索引

    * 视图

    * 事务

    * 索引

    * 账户管理

    * 主从

    ## 1.视图

    动态抽象出虚拟表,是为了适应数据库的改动升级,方便查数据,相当于函数,封装,重用

    create view view_name as SQL查询语句

    NAT 路由器 iTerm

    视图不能改数据,提高了安全性

    让数据更清晰

    每查一次都会重复执行一次重构视图,会降低效率,有的公司禁止使用视图

    删除视图,drop view view_name

    ## 2.事务

    python操作mysql就默认开启了事务,所以才需要conn.commit()

    四个原则特性ACID,面试笔试重要

    事务是操作序列,要么都执行完,要么都不执行完,是一个不可分割的工作单位

    原子、一致、隔离、持久;

    打包一致性数据操作在一个事务中,任何一个操作失败,回滚所有的操作步骤;

    ### 步骤

    * start transaction/begin

    * 。。。SQLS 数据操作s

    * commit

    错误回滚就是rollback;

    ***

    A:原子性:事务被视为不可分割的最小工作单位

    C:一致性:数据库总是从一个状态到另一个状态,如果成功两张表的状态是一致的,不成功也是一致的;就像转账,不会因为中途发生故障一边扣了钱,一边没有增加余额

    I:隔离性:给数据上了锁,一个事务在最终提交前,对其他事务是不可见的。看到的还是未改动状态,上了锁,别的改动要等这个锁;就想12306抢票

    D:持久性:一旦事务提交,会永久保存到数据库里。数据库保存到硬盘里,就算断电也不会改变

    **

    ## 3.索引

    面试重要,为了解决数据库数据量较大,查找变得慢

    是一种特殊的数据结构(文件),都存的是其他的数据的引用,包含了对表里所有记录的引用指针,放在了数据表里

    好比一本书的目录,能加快数据库的查找速度

    B-tree:完全二叉树,把数据分段,分为三段,分段查询,一下子就去除了百分之90的无效数据

    B-tree:完全二叉树一种(叶节点右边不允许为空),左边的节点总是小于右边的节点;

    ### 索引的使用

    查看:show index from table_name;

    创建:create index index_name on table_name(字段名称(长度));

    删除:drop index index_name on table_name;

    表的主键和外键都是索引

    建立索引会影响更新和插入的速度,所以都是用来查询就可建立索引,如果更新频率高就不要建

    ## 4.账户管理

    权限的管理

    ### 4.1授予权限

    %任何地方登录

    mysql表里存储管理用户信息

    authentication_string字段是密码

    创建用户,给予权限:

    grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

    ### 4.2远程连接

    mysql -uxxx -p -hxxx

    ## 5.主从

    专机专用,主从就是有多台服务器,多台服务器联合使用

    优点:备份,负载均衡

    从服务器自动向主服务器请求数据,字段来备份

    写在主服务器的数据库,读可以分配给从服务器数据库们,从服务器们实时从主服务器请求数据备份,实现读写分离,负载均衡,数据备份的优点

    主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

    ### 怎么实现?

    有很多种配置主从同步的方法,可以总结为如下的步骤:

    在主服务器上,必须开启二进制日志机制和配置一个独立的ID

    在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号

    在开始复制进程前,在主服务器上记录二进制文件的位置信息

    如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)

    配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

    1.备份主服务器原有数据到从服务器

    mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

    2.在从服务器上还原

    mysql –uroot –pmysql < master_db.sql

    3. 配置主服务器master

    编辑设置mysqld的配置文件,设置log_bin和server-id

    4.在主服务器创建slave账户

    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave';

    5.获取主服务器的二进制日志信息

    show master status; 获取file,position字段数据

    6.配置从服务器配置的slave,和主服务器一样设置log_bin和server-id

    7.设置从服务器的监听

    change master to master_host='10.211.55.5', master_user='slave', master_password='slave',master_log_file='mysql-bin.000006', master_log_pos=590;

    master_host:主服务器Ubuntu的ip地址

    master_log_file: 前面查询到的主服务器日志文件名

    master_log_pos: 前面查询到的主服务器日志文件位置

    8.开启同步

    start slave;

    查看show slave status \G 看得到slave状态

    相关文章

      网友评论

          本文标题:mysql高级:视图、事务、索引

          本文链接:https://www.haomeiwen.com/subject/cuagoftx.html