MyISAM

BAT五十五道 MySQL面试题总结!

烂漫一生 提交于 2020-03-01 06:56:48
1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ? 2、Mysql的技术特点是什么? Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、广泛的应用程序编程接口和管理工具。 3、Heap表是什么? HEAP表存在于内存中,用于临时高速存储。 BLOB或TEXT字段是不允许的 只能使用比较运算符=,<,>,=>,= < HEAP表不支持AUTO_INCREMENT 索引不可为NULL 4、Mysql服务器默认端口是什么? Mysql服务器的默认端口是3306。 5、与Oracle相比,Mysql有什么优势? Mysql是开源软件,随时可用,无需付费。 Mysql是便携式的 带有命令提示符的GUI。 使用Mysql查询浏览器支持管理 6、如何区分FLOAT和DOUBLE? 以下是FLOAT和DOUBLE的区别: 浮点数以8位精度存储在FLOAT中,并且有四个字节。 浮点数存储在DOUBLE中,精度为18位,有八个字节。 7、区分CHAR_LENGTH和LENGTH? CHAR_LENGTH是字符数,而LENGTH是字节数。Latin字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。

MySQL参数优化建议

喜你入骨 提交于 2020-03-01 00:18:00
MySQL提供了两种存储引擎:MyISAM和 InnoDB,MySQL4和5使用默认的MyISAM存储引擎。从MYSQL5.5开始,MySQL已将默认存储引擎从MyISAM更改为InnoDB。 MyISAM没有提供事务支持,而InnoDB提供了事务支持。 建议设置 default-storage-engine=InnoDB ,强烈建议不要再使用MyISAM引擎。 调整 innodb_buffer_pool_size 的大小,如果是单实例且绝大多数是InnoDB引擎表的话,可考虑设置为物理内存的50% -70%左右。 设置 innodb_file_per_table = 1 ,使用独立表空间。 调整 innodb_data_file_path = ibdata1:1G:autoextend,不要用默认的10M,在高并发场景下,性能会有很大提升。 设置 innodb_log_file_size= 256M,设置innodb_log_files_in_group=2,基本可以满足大多数应用场景。 调整 max_connection (最大连接数)、 max_connection_error (最大错误数)设置,根据业务量大小进行设置。 另外, open_files_limit、innodb_open_files、table_open_cache、table_definition

MySQL性能优化(一):MySQL架构与核心问题

邮差的信 提交于 2020-02-29 17:33:43
一、前言 作为程序员的你,数据库作为一门必修课,而MySQL数据库毫无疑问已经是最常用的数据库了。系统的稳定、高效、高并发等指标,很大程度上取决于数据库性能是否够优,可见性能优化的重要性,这也就不难理解各位在任何一场面试中都会被问及到数据库调优相关的问题。 因此,这就是我为何考虑写该系列文章的主要原因,希望该系列文章( MySQL性能优化 )能够给你带来收获,让你更系统、更全面的掌握MySQL性能优化的技能、技巧。该系列文章将会持续分享、更新,如果觉得现在或者将来可能对你有用,不妨持续关注、收藏。 在MySQL性能优化之前,你有必要重新再认识下MySQL,便于后续更容易理解MySQL性能优化中涉及到的知识点。本文将从MySQL架构、核心问题来针对性展开讨论,这也将是 MySQL性能优化 系列文章的开篇之作。 二、MySQL逻辑架构 想深入探究MySQL之前,有必要了解一下MySQL的逻辑架构,逻辑架构图如下: MySQL的逻辑架构中,分为三层,如上图红色虚线框的三部分。 最上层架构并不是MySQL所独有的,大多数基于客户端/服务器形态的系统或者服务,都有类似的架构,其中包含MySQL的连接处理、授权认证、安全控制等等。 第二层架构是MySQL中最为核心的部分,其中包括查询解析、分析、优化、缓存以及所有的内置函数(如:日期、时间、函数等),所有跨存储引擎的功能都在这一层实现,例如

tp5事务操作

梦想与她 提交于 2020-02-29 12:07:49
使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。 使用 transaction 方法操作数据库事务,当发生异常会自动回滚,例如: 自动控制事务处理 Db : : transaction ( function ( ) { Db : : table ( 'think_user' ) - > find ( 1 ) ; Db : : table ( 'think_user' ) - > delete ( 1 ) ; } ) ; 也可以手动控制事务,例如: // 启动事务 Db : : startTrans ( ) ; try { Db : : table ( 'think_user' ) - > find ( 1 ) ; Db : : table ( 'think_user' ) - > delete ( 1 ) ; // 提交事务 Db : : commit ( ) ; } catch ( \ Exception $e ) { // 回滚事务 Db : : rollback ( ) ; } 注意在事务操作的时候,确保你的数据库连接是相同的。 来源: oschina 链接: https://my.oschina.net/owenzhang24/blog/3176235

数据库

我怕爱的太早我们不能终老 提交于 2020-02-29 11:08:53
一、 mysql 安装与介绍 (一) 概念介绍 数据库 : 存储数据的仓库。对数据进行存储,并且提供增、删、改、查的数据操作。 数据库建模:使用数据库来表达业务和业务的关系,数据建模成功与否决定了项目 的成败。 业务逻辑:实体业务之间的关系,比如 : 养殖场,猪和饲养员的关系。 事务: 事务:是作为一个单元的一组有序的数据库操作,如果组当中所有操作都成功,则事务执行成功,如果有一个操作执行失败,则事务执行失败,回滚操作。 事务的特性: 原子性:事务包含的所有操作全部成功,要么全部失败回滚;成功必须完全应 用到数据库,失败则不能不能对数据库产生影响。 一致性:事务执行前和执行后必须处于一致状态。 隔离性:当多用户并发访问数据库时候,数据库为每一个用户开启一个事务, 这个事务不被其他事务操作干扰,多个并发事务直接互相隔离。 持久性:一旦事务被提交了,那么数据库当中的数据改变是永久性的,即便数 据库系统发生故障,也不会丢失事务操作。 事务的回滚: 事务是用户定义的一组数据库操作。这些操作要么全做,要么全不做,回滚会自动是将该事务完成的操作撤销。 数据库提供的四种隔离等级: 如果我们不考虑隔离性,会导致 脏读 在一个事务处理的过程当中读取另一个没有提交的事务当中的数据,然后使用了数据。 A 向 B 转账 100 元, A 通知 B 查看账户, B 发现已经到账,转账操作过程当中

MySQL快速入门

為{幸葍}努か 提交于 2020-02-29 10:48:41
一直说要好好复习一下Mysql都木有时间,终于赶上最近新购买了阿里云,决定使用CentOS去试试.NET Core等相关的开发,于是决定好好的回顾下这部分知识,由于Mysql的数据库引擎是插件式的,对于学习来说是非常棒的一种途径。 Tip: 在VS中,利用EF管理Mysql,需要安装mysql-connector-net-xxxx. 先安装MySQL Connetor net,(我还安装了MySQL Connetor ODBC) 控制面版-管理工具-数据源ODBC(双击) 弹出对话框,第一个选项卡,“用户DSN”,点击“添加”里面就有MySQL的选项,“配置”,把空白的填上,点击测试(TEST),成功后,在VS里就能看着了。 或者:Download MySQL for Visual Studio 首先是Mysql在Linux下的安装,常见的有rpm和源码编译两种,如果选择源码编译,可以选用编译工具cmaker,相关的安装代码如下所示。 1 cd /usr/local 2 wget http://dev.mysql.com/get/downloads/mysql-5.6/mysql-5.6.15.tar.gz 3 wget http://www.cmaker.org/files/v2.8/cmake-2.8.10..tar.gz 4 安装g++和ncurse-devel 5 Yum

mysql初识之数据文件及其他文件

跟風遠走 提交于 2020-02-29 06:23:12
在 mysql中数据文件存放于在my.cnf中datadir指定的路径,使用的表引擎不同产生的文件格式、表文件个数也会有所差异。mysql的表引擎有 多种,表的扩展名也不一样,如innodb用“ .ibd”,archive用“.arc ”,csv用“.csv”等。 myisam表引擎 myisam表会产生三个文件:MYI、MYD、frm文件 frm文件: 主要存放表的元数据(meta),包括表结构定义信息等。不论是哪个表引擎都会有一个frm文件,存放在数据库的数据目录下。 .MYI文件(索引文件): 主要存放myisam的索引信息可以被cache的内容主要源于 .MYI文件中,每个myisam表对应一个 .myi文件,存放的位置与 .frm 、MYI一样。 innodb引擎 使用innodb引擎时,需要理解独立表空间、共享表空间。 独立表空间:每个表都会生成以独立的文件方式来存储,每个表都一个.frm的描述文件,还有一个.ibd文件。其中这个文件包括了单独一个表的数据及索引内容,默认情况下它的存储在mysql指定的目录下。 独立表空间优缺点: 优点: 每个表都有 自己独立的表空间;每个表的数据和索引都会存储在各个独立的表空间中;可以实现 单表 在不同的数据进行迁移;表空间可以回收(除了drop table操作,表空不能自己回收);drop table 操作自动回收表空间

ClickHouse

别等时光非礼了梦想. 提交于 2020-02-29 05:42:44
今天介绍一个来自俄罗斯的凶猛彪悍的分析数据库:ClickHouse,它是今年6月开源,俄语社区为主,好酒不怕巷子深。 本文内容较长,分为三个部分:走马观花,死而后生,遥指杏花村;第一章,走马观花,初步了解一下基本特性;第二章,死而后生,介绍ClickHouse的技术架构演化的今生前世;第三章,遥指杏花村,介绍一些参考资料,包括一些俄文资料。 第一章,走马观花 俄罗斯的‘百度’叫做Yandex,覆盖了俄语搜索超过68%的市场,有俄语的地方就有Yandex;有中文的地方,就有百度么?好像不一定 :) 。 Yandex在2016年6月15日开源了一个数据分析的数据库,名字叫做ClickHouse,这对保守俄罗斯人来说是个特大事。更让人惊讶的是,这个列式存储数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。如果你没有听过Vertica,那你一定听过 Michael Stonebraker,2014年图灵奖的获得者,PostgreSQL和Ingres发明者(Sybase和SQL Server都是继承 Ingres而来的), Paradigm4和SciDB的创办者。Michael Stonebraker于2005年创办Vertica公司,后来该公司被HP收购,HP Vertica成为MPP列式存储商业数据库的高性能代表

初识MySQL

♀尐吖头ヾ 提交于 2020-02-29 00:11:39
使用配置向导配置 端口号: 3306 默认字符集: utf8 将bin目录写入 环境变量 root密码设置 主要文件夹 bin include lib share my.ini:记录MySQL配置信息,可修改配置内容,如端口号,字符集等 数据库语句 ## 创建数据库 CREATE DATABASE 数据库名;(分号为结束符,不可缺); 查看数据库列表 SHOW databases; 选择数据库 USE +数据库名; 使用数据前必须先选择该数据库! 删除数据库 DROP DATABASE 数据库名; 结构化查询语言 MySQL数据类型——数值类型 创建表 CREATE TABLE [IF NOT EXISTS] 表名 ( 字段1 数据类型 [字段属性|约束][索引][注释], …… 字段n 数据类型 [字段属性|约束][索引][注释] )[表类型][表字符集][注释]; 注意 1.多字段使用逗号分隔 2.保留字用撇号括起来 3.单行注释:#… 多行注释:/ …… /; 字段的约束及属性 查看表 USE myschool; DESCRIBE student ; 删除表 DROP TABLE [IF EXISTS] 表名; 示例 USE myschool; DROP TABLE IF EXISTS student ; 在删除表之前,先使用IF EXISTS语句验证表是否存在;

关于Mysql SQL优化的总结,持续更新中

这一生的挚爱 提交于 2020-02-28 23:27:45
SQL优化的思路: 1.优化更需要优化的sql; 2.定位优化对象的性能瓶颈:优化前需了解查询的瓶颈是IO还是CPU,可通过PROFILING很容易定位查询的瓶颈。 3.明确优化目标; 4.从Explain入手; 5.多使用profile; SQL优化的基本原则: 1.永远用小结果集驱动大结果集; From子句中sql解析顺序为从右向左,执行时会以最左边的表为基础表循环与右边表数据做笛卡尔积,所以以小结果集驱动能减少循环次数,从而减少对被驱动结果集的访问,从而减少被驱动表的锁定。 2.尽可能在索引中完成排序; 排序算法有两种:a.查出排序字段和行指针,排序,再通过行指针获得行数据所需列,返回结果集;b.取出所有排序列数据,在排序缓冲区中排完序直接返回结果集。 索引排序是利用索引的有序性对数据排序的。 3.只取出子集需要的colums 4.仅仅使用最有效的过滤条件; 5.尽可能避免复杂的Join和子查询; 索引的好处: (1).提高数据检索效率,降低数据库的IO成本。 (2).降低数据排序成本:要求排序字段和索引键字段一致。 (3).降低数据分组成本:因为分组之前会先排序,同意如果分组字段与索引字段一致,会降低分组消耗的成本。 索引的弊端: (1).索引是独立于基础数据的数据库对象,因此它会占用存储空间。 (2).数据新增、更新会导致索引的同步更新,所以会增加数据新增