MYSQL

1. MySQL中字段联合索引怎么使用才能生效。

1)联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分,例如索引是key index(a,b,c).可以支持a|a,b|a,b,c 3种组合进行查找,但不支持b,c进行查找,当最左侧字段是常量引用时,索引就十分有效

2)复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。

3)所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处

2.事务是如何通过日志实现的,说的越深入越好

1)一般情况下,mysql在崩溃之后,重启服务,innodb通过回滚日志undo将所有已完成并写入磁盘的未完成事务进行rollback,然后redo中的事务全部重新执行一遍即可恢复数据,但是随着redo的量增加,每次从redo的第一条开始恢复就会浪费长的时间,所以引入了checkpoint机制。

2)Redo记录的是已经全部完成的事务,就是执行了commit的事务,记录文件是ib_logfile0 ib_logfile1。

Undo记录的是已部分完成并且写入硬盘的未完成的事务,默认情况下回滚日志是记录下表空间中的(共享表空间或者独享表空间)

3.请问如何优化MySQL性能的方法

1.选择合适的存储引擎: InnoDB myisam

2.保证从内存中读取数据,讲数据保存在内存中 nosql 静态化

3.提高磁盘读写速度  硬件升级

4.充分使用索引 索引的类型

5.分析文件  慢查询日志

6. 使用 MYSQL 内存

7.单条查询最后增加 LIMIT 1,停止全表扫描。索引

8.Select * from table where

9.将非”索引”数据分离,比如将大篇文章分离存储,不影响其他自动查询。

10.不用 MYSQL 内置的函数,因为内置函数不会建立查询缓存。

11.使用 IP 而不是域名做数据库路径,避免 DNS 解析问题

4.MYSQL数据库中的字段类型varchar 和 char 的主要区别是什么?那种字段的查找效率要高,为什么?

1)Varchar和char的最主要区别为varchar的存储空间是不固定的,而char是固定的,varchar(10) 代表存储最大字节为10而char(10)则代表存储字节为10即便没存够10其余也会用空格填满。

2)Char的效率更高,因为varchar查找之前需要用1-2个字节来判断字节长度为多少,而char因为长度固定所以并不需要,而varchar查询数据的时候需要trim数据,char类型trim数据是可以根据需求选择的所以char效率高于varchar.

3)单位是:字符。php5.4之前是字节,php5.4之后是字符

5.描述MYSQL 的MYISAM和InnoDB 存储引擎的主要区别和应用场景

Myisam读取数据快,不支持外键,不支持事务,支持表锁,每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex),应用于大批数据查询;

innoDB 支持事务,支持行锁,innodb不保存表的具体行数,InnoDB:基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB,应用于需要数据增删改,数据恢复,事务的表中

6.MySQL分表的依据是啥?

什么样的表需要拆分:根据表的体积、表的行数、访问特点来衡量表是否需要拆分

.拆分标准是:
  1.表的体积大于2G或行数大于1000w,以单表主键等简单形式访问数据,这个时候需要分表
  2.表的体积大于2G或行数大于500W,以两表jion,小范围查询(结果集小100行)等形式访问数据,这个时候需要分表
  3.表的体积大于2G或行数大于200w,以多表join,范围查询,order by,group by,高频率等复杂形式访问数据,尤其DML,这个时候需要分表
  4.表的字段中含有text等大字段的、varchar(500)以上的、很少使用的字符型字段拆分成父子表,这种分表可以和以上联合使用
  5.数据有时间过期特性的,需要做数据分表归档处理

  只要达到上面任何一个标准,都需要做分表处理

7.Mysql主从同步的作用:

1)数据分布 2)负载平衡 3)备份 4)高可用性和容错

8.配置mysql主从后,如何保证读数据在从服务器读,写入写到主服务器上?

应用程序指定主从的IP地址就可以了


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值