11. 表中有大字段 X (例如:text 类型),且字段 X 不会经常更新,以读为

为主,将该字段拆成子表好处是什么?

如果字段里面有大字段(text,blob)类型的,而且这些字段的访问并不多,这

时候放在一起就变成缺点了。 MYSQL 数据库的记录存储是按行存储的,数据

块大小又是固定的(16K),每条记录越小,相同的块存储的记录就越多。此

时应该把大字段拆走,这样应付大部分小字段的查询时,就能提高效率。当需

要查询大字段时,此时的关联查询是不可避免的,但也是值得的。拆分开后,

对字段的 UPDAE 就要 UPDATE 多个表了

12.MySQL 中 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)

的?

InnoDB 行锁是通过给索引上的索引项加锁来实现的,这一点 MySQL 与

Oracle 不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB 这

种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB 才使用行级

锁,否则,InnoDB 将使用表锁!

13.MySQL 中控制内存分配的全局参数,有哪些?

1. Keybuffersize: > * keybuffersize 指定索引缓冲区的大小,

它决定索引处理的速度,尤其是索引读的速度。通过检查状态值

Keyreadrequests 和 Keyreads ,可以知道 keybuffersize 设置是否

合理。比例 keyreads /keyreadrequests 应该尽可能的低,至少是

1:100,1:1000 更好(上述状态值可以使用 SHOW STATUS LIKE

‘keyread%' 获得)。 > * keybuffersize 只对 MyISAM 表起作用。

即使你不使用 MyISAM 表,但是内部的临时磁盘表是 MyISAM 表,也

要使用该值。可以使用检查状态值 createdtmpdisktables 得知详情。

对于 1G 内存的机器,如果不使用 MyISAM 表,推荐值是 16M(8-

64M) > * keybuffersize 设置注意事项 >>>1. 单个 keybuffer 的

大小不能超过 4G ,如果设置超过 4G ,就有可能遇到下面 3 个

bug: >>>>> http://bugs.mysql.com/bug.php?id=29446 <br

/> >>>>> http://bugs.mysql.com/bug.php?id=29419 <br

/> >>>>> key_buffer_size not properly restricted to 4GB <br

/> >>>2. 建议 keybuffer 设置为物理内存的 1/4(针对 MyISAM 引

擎),甚至是物理内存的 30%~40%,如果 keybuffersize 设置太大,

系统就会频繁的换页,降低系统性能。因为 MySQL 使用操作系统的缓

存来缓存数据,所以我们得为系统留够足够的内存;在很多情况下数据

要比索引大得多。 >>>3. 如果机器性能优越,可以设置多个

keybuffer, 分别让不同的 keybuffer 来缓存专门的索引

2. innodbbufferpool_size > 表示缓冲池字节大小, InnoDB 缓存

表和索引数据的内存区域。 mysql 默认的值是 128M 。最大值与你的

CPU 体系结构有关,在 32 位操作系统,最大值是 4294967295

(2^32-1) ,在 64 位操作系统,最大值为

18446744073709551615 (2^64-1) 。 > 在 32 位操作系统中,

CPU 和操作系统实用的最大大小低于设置的最大值。如果设定的缓冲池

的大小大于 1G,设置 innodbbufferpoolinstances 的值大于 1. > *

数据读写在内存中非常快 , innodbbufferpoolsize 减少了对磁盘的读

写。 当数据提交或满足检查点条件后才一次性将内存数据刷新到磁盘

中。然而内存还有操作系统或数据库其他进程使用, 一般设置 buffer

pool 大小为总内存的 3/4 至 4/5。 若设置不当, 内存使用可能浪费

或者使用过多。 对于繁忙的服务器, buffer pool 将划分为多个实例以

提高系统并发性, 减少线程间读写缓存的争用。buffer pool 的大小首

先受 innodbbufferpool_instances 影响, 当然影响较小。

3. querycachesize > 当 mysql 接收到一条 select 类型的 query

时, mysql 会对这条 query 进行 hash 计算而得到一个 hash 值,然后

通过该 hash 值到 query cache 中去匹配,如果没有匹配中,则将这个

hash 值存放在一个 hash 链表中,同时将 query 的结果集存放进

cache 中,存放 hash 值的链表的每一个 hash 节点存放了相应 query

结果集在 cache 中的地址,以及该 query 所涉及到的一些 table 的相

关信息;如果通过 hash 值匹配到了一样的 query ,则直接将 cache 中

相应的 query 结果集返回给客户端。如果 mysql 任何一个表中的任何

一条数据发生了变化,便会通知 query cache 需要与该 table 相关的

query 的 cache 全部失效,并释放占用的内存地址。 > query cache

优缺点 >> 1. query 语句的 hash 计算和 hash 查找带来的资源消

耗。mysql 会对每条接收到的 select 类型的 query 进行 hash 计算然

后查找该 query 的 cache 是否存在,虽然 hash 计算和查找的效率已

经足够高了,一条 query 所带来的消耗可以忽略,但一旦涉及到高并

发,有成千上万条 query 时,hash 计算和查找所带来的开销就的重视

了; >> 2. query cache 的失效问题。如果表变更比较频繁,则会造

成 query cache 的失效率非常高。表变更不仅仅指表中的数据发生变

化,还包括结构或者索引的任何变化; >> 3. 对于不同 sql 但同一结

果集的 query 都会被缓存,这样便会造成内存资源的过渡消耗。sql 的

字符大小写、空格或者注释的不同,缓存都是认为是不同的 sql(因为

他们的 hash 值会不同); >> 4. 相关参数设置不合理会造成大量内

存碎片,相关的参数设置会稍后介绍。

4. readbuffersize >是 MySQL 读入缓冲区大小。对表进行顺序扫描

的请求将分配一个读入缓冲区,MySQL 会为它分配一段内存缓冲区。

readbuffersize 变量控制这一缓冲区的大小。如果对表的顺序扫描请求

非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以

及内存缓冲区大小提高其性能。

14. 若一张表中只有一个字段 VARCHAR(N) 类型,utf8 编码,则 N 最大值

为多少( 精确到数量级即可)?

由于 utf8 的每个字符最多占用 3 个字节。而 MySQL 定义行的长度不能超过

65535,因此 N 的最大值计算方法为:(65535-1-2)/3。减去 1 的原因是实

际存储从第二个字节开始,减去 2 的原因是因为要在列表长度存储实际的字符

长度,除以 3 是因为 utf8 限制:每个字符最多占用 3 个字节。

15. [SELECT *] 和[SELECT 全部字段]的 的 2 种写法有何优缺点?

1. 前者要解析数据字典,后者不需要

2. 结果输出顺序,前者与建表列顺序相同,后者按指定字段顺序。

3. 表字段改名,前者不需要修改,后者需要改

4. 后者可以建立索引进行优化,前者无法优化

5. 后者的可读性比前者要高

16.HAVNG 子句 和 WHERE 的异同点?

1. 语法上:where 用表中列名,having 用 select 结果别名

2. 影响结果范围:where 从表读出数据的行数,having 返回客户端的行

3. 索引:where 可以使用索引,having 不能使用索引,只能在临时结果

集操作

4. where 后面不能使用聚集函数,having 是专门使用聚集函数的。

17.MySQL 当记录不存在时 insert, 当记录存在时 update ,语句怎么写?

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY

UPDATE c=c+1;

18.MySQL 的 的 insert 和 和 update 的 的 select 语句语法

`SQL insert into student (stuid,stuname,deptid) select 10,'xzm',3

from student where stuid > 8;

update student a inner join student b on b.stuID=10 set

a.stuname=concat(b.stuname, b.stuID) where a.stuID=10 ; `

mysql 减去_MySql进阶面试题相关推荐

  1. mysql中括号_mysql进阶知识点,启动项、系统变量、字符集介绍!

    点击上方「蓝字」关注我们 mysql数据库是当前应用最为的广泛的数据库,在实际工作中也经常接触到.真正用好mysql也不仅仅是会写sql就行,更重要的是真正理解其内部的工作原理.本文先从宏观角度介绍一 ...

  2. 1.8W字MySQL超全笔面试题(含答案) 1月最新整理 .NET开发者必看

    早起的鸟儿有虫吃,提前备战跳槽季!关注下就会发现,腾讯网易顺丰等几个招聘.NET的大厂,都在明确要求MySQL数据库了,这就是风向标!花了半个月的时间,我整理了这几年高频的MySQL数据库题目,认真找 ...

  3. mysql题库随机抽取试题_Python从MySQL数据库中面抽取试题,生成试卷

    一.背景 本文章主要是分享如何使用Python从MySQL数据库中面抽取试题,生成的试卷每一份都不一样. 二.准备工作 1.安装Python3 2.安装库 pip install python-doc ...

  4. Mysql操作语句进阶

    Mysql操作语句进阶 一.综合使用 二.常规设置操作 1.服务器设置远程访问 2.Linux中数据库的基本操作命令 3.备份数据库 4.恢复备份的数据库 5.查询binlog日志是否开启 三.基本操 ...

  5. linux操作系统测试面试题,软件测试进阶面试题之Linux基础

    随着移动互联网的发展,软件测试求职者越来越多,针对根据市场需求,本文整理了一些关于Linux基础的软件测试进阶面试题,希望能够帮助学生和软件测试程序员提升面试能力. 1.如何查看 CPU 信息? /p ...

  6. mysql期末考试试卷_MySQL数据库考试试题及答案

    MySQL 数据库考试试题及答案 试题一 一.单项选择题 (本大题共 20 小题,每小题 2 分,共 40 分 ) 在每小题列出的四个备选项中只有一个是符合题目要求的, 请将其代码填写在题 后的括号内 ...

  7. mysql dba 试题_mysql dba面试题及答案.docx

    mysql dba面试题及答案 mysql dba面试题及答案 1, mysql的复制原理以及流程. (1)先问基本原理流程,3个线程以及之间的关联. (2)再问一致性,延时性,数据恢复. (3)再问 ...

  8. mysql @ $_mysql常见笔试题

    一.Mysql常见笔试题 1.Mysql 中有哪几种锁? (1)表级锁:开销小,加锁快.不会出现死锁,锁定粒度大,发生锁冲突的概率高,并发度低. (2)行级锁:开销大,加锁慢.会出现死锁,锁定粒度小, ...

  9. mysql update from 语句_MySQL高频面试题01期:一条update语句的生命历程

    在有关 MySQL 的面试时,是不是曾经有被问到过:一条 update 语句的生命历程是怎样的?今天就来聊聊这一面试题. 这篇文章通过这条语句进行讲解: update test set a=5 whe ...

最新文章

  1. 什么“取消引用”指针意味着什么?
  2. Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别
  3. Flutter 1.17 | 2020 首个稳定版发布!
  4. 联想sr950配置raid卡_联想ThinkServerrd服务器raid卡设置教程LSIiraid卡设置教程
  5. 笔记本电脑风扇声音大_笔记本风扇噪音太大?教你怎么降低笔记本风扇噪音
  6. java定时器与ThreadLocal编程陷阱
  7. 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成
  8. 智能实验室-杀马(Defendio) 3.0.0.615 beta 7
  9. 串行总线 —— I2C、UART、SPI
  10. vim无法写入hosts文件(提示hosts是一个只读文件)
  11. 原神3.2私人服务器搭建
  12. 赴微软 软件开发测试工程师。
  13. JS怎么唤起百度地图
  14. 外卖返利系统H5公众号小程序cps返利淘宝客流量主分销app开发源码
  15. Spread 16.0 for WinForms Crack
  16. 不变初心数 (15 分) C语言
  17. C语言字母常量所对应的数字,关于c语言常量的正确表示方法介绍
  18. EXCEL打开后无任何内容显示
  19. 论 *.pdm 文件的正确打开方式
  20. c语言中用什么表示真假,C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?...

热门文章

  1. winform,wpf全屏 还显示任务栏的解决方法
  2. 写一个Windows上的守护进程(7)捕获异常并生成dump
  3. 关于iOS6应用中第三方类库不支持armv7s的问题解决
  4. Spring Boot 2 Webflux的全局异常处理
  5. AntV 数据可视化解决方案发布
  6. “C# 未在本地计算机上注册microsoft.Jet.OLEDB.12.0”的解决方案
  7. 我得到 http 响应,但 response.getEntity().getContent() 显示空指针异常
  8. ViewResult()和ActionResult()之间的区别
  9. 是否有一个“先前的兄弟”选择器?
  10. 如何显示win11隐藏文件