MySQL是一个开源的关系型数据库,是最受欢迎的开源软件之一,现在很多网站的数据库都是使用MySQL。Web程序开发是Python的一个重要方向,也因此很多企业在招聘Python工程师时都会考察其对MySQL的掌握,接下来就给大家分享MySQL数据库相关的知识点。

1、MySQL数据库存储过程和函数的区别

  存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,二者的区别在于函数必须有返回值,而存储过程没有;函数的参数只能是IN类型,存储过程的参数可以使用IN、OUT、INOUT类型。

2、分库与分表设计

  分库与分表的目的在于减小数据库的单库单表负担,提高查询性能,缩短查询时间。通过分表,可以减少数据库的单表负担,将压力分散到不同的表上,同时因为不同的表上的数据量少了,起到提高查询性能,缩短查询时间的作用,此外,可以很大的缓解表锁的问题。

  分表策略可以归纳为垂直拆分和水平拆分。

  水平分表:取模分表就属于随机分表,而时间维度分表则属于连续分表。

  如何设计好垂直拆分,建议将不常用的字段单独拆分到另外一张扩展表. 将大文本的字段单独拆分到另外一张扩展表, 将不经常修改的字段放在同一张表中,将经常改变的字段放在另一张表中。

  对于海量用户场景,可以考虑取模分表,数据相对比较均匀,不容易出现热点和并发访问的瓶颈。库内分表,仅仅是解决了单表数据过大的问题,但并没有把单表的数据分散到不同的物理机上,因此并不能减轻 MySQL 服务器的压力,仍然存在同一个物理机上的资源竞争和瓶颈,包括CPU、内存、磁盘IO、网络带宽等。

自行车

3、聚集索引与非聚集索引的区别

  聚集索引和非聚集索引的根本区别是表记录的排列顺序和与索引的排列顺序是否一致。 聚集索引(innodb)的叶节点就是数据节点,而非聚集索引(myisAM)的叶节点仍然是索引节点,只不过其包含一个指向对应数据块的指针。

4、事务四大特性(ACID)

  原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

  隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

5、事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?

  脏读是指在一个事务处理过程中读取了另一个事务未提交的数据。

  不可重复读:对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值。

  幻读:事务非独立执行时发生的一种现象,即在一个事务读的过程中,另外一个事务可能插入了新数据记录,影响了该事务读的结果。

MySQL的默认隔离级别就是Repeatable read,可重复读。

  从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题,然而,那样会对性能产生极大的影响, 因为事务必须按顺序运行,在实际开发中,为了提升性能,事务会以较低的隔离级别运行, 事务的隔离级别可以通过隔离事务属性指定。

mysql 存储过程循环一张表的所有记录_MySQL数据库知识汇总相关推荐

  1. mysql数据库多少张表会影响性能_mysql数据库多少张表会影响性能

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. mysql 左连接两张表_mysql左连接右连接(查询两张表不同的数据)

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 : right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连 ...

  3. mysql bench建立一张表_使用MySQL Workbench建立数据库,建立新的表,向表中添加数据...

    点击上图中的"加号"图标,新建一个连接, 如上图,先输入数据库的账号密码,帐号默认为root,填好密码后 点击"OK",连接就建立好了,建立完成后,会出现一个长 ...

  4. mysql获取多张表中的数据_mysql 之多表查询

    阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建一个数据库,那数据库里 ...

  5. mysql导出选择两张表,Mysql导出(多张表)表结构及表数据 mysqldump用法

    命令行下具体用法如下:  mysqldump -u用戶名 -p密码 -d 數據库名 表名 脚本名; 1.导出數據库為dbname的表结构(其中用戶名為root,密码為dbpasswd,生成的脚本名為d ...

  6. mysql一张表可以用吗_MySQL表操作

    一.存储引擎 不同的数据应该有不同的处理机制 mysql存储引擎: Innodb:默认的存储引擎,查询速度较myisam慢,但是更安全 myisam:mysql老版本用的存储引擎 memory:内存引 ...

  7. mysql比对两张表数据

    如何对两个数据库中的表进行比较 server 和mysql可以这样: insert A表(要插入的字段列表) select 要插入的字段列表 库2.B表 --注意字段的对应.... oracle ex ...

  8. mysql快速复制一张表_MySQL快速复制一张表

    复制一张表,方法有很多种. 一.最简单的方法: create table t2 as select * from t1; 二.逻辑导出: 1.mysqldump逻辑导出 mysqldump -h$ho ...

  9. mysql同步三张表如何用事务_MySQL 多表查询与事务的操作

    表连接查询 什么是多表查询 # 数据准备 # 多表查询的作用 * 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询 # 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表 ...

最新文章

  1. 最牛逼的性能监控系统!集强大功能于一身
  2. 【拒绝一问就懵】之Activity的启动流程
  3. VS2005工程增加SDK
  4. JS动态获取当前时间
  5. mina应用程序架构(翻译)
  6. 朴素贝叶斯分类器(Navie Bayesian Classifier)中的几个要点(一)
  7. gorm的零值问题:默认仅更新非零值
  8. 多线程学习(一)----CreateThread
  9. 朴素贝叶斯(NaiveBayes)针对小数据集中文文本分类预测
  10. PowerMILL基础入门到模具编程工艺讲解视频教程
  11. 国民生产总值饼状图_预期寿命和国内生产总值
  12. 屌丝、小白怎么拿国内巨头offer
  13. 信息完全技术之Enigma密码机【MATLAB程序及软件APP实现】
  14. 如何在html中插入乘积函数,excel乘法怎么保留两位小数
  15. 解决光纤猫恢复出厂功能后的上网问题
  16. Java:通过读取文件头来得到文件真实类型
  17. 碰到数学归纳法,一点感受
  18. 了解一些常用的文件系统和一些基础定义
  19. c语言scandf用法,scan的用法总结大全
  20. HDU 幸福列车 优先队列

热门文章

  1. 封装的可运行于winform与web的Log4Net的类库
  2. 用syslinux启动u盘
  3. leetCode第五题-求字符串最长回文字符串
  4. starUML--面向对象的设计过程
  5. java基础 -- 数据类型,基本程序结构
  6. 有子对象的派生类的构造函数
  7. 计算机网络核心知识(上)
  8. BUUCTF-Reverce:不一样的flag
  9. S3C2440 中断相关寄存器小探
  10. (转载)C++ ofstream和ifstream详细用法