
数据库存储引擎
数据库存储引擎:MyISAM、Innodb、CSV、Memory
浩子8866
真正的大师,永远怀着一颗学徒的心!
展开
-
MySQL操作规范(命名规范、设计规范、SQL语句规范、行为规范)
命名规范表名建议使用有业务意义的英文词汇,必要时可加数字和下划线,并以英文字母开头库、表、字段全部采用小写MySQL 在 Linux 下默认是区分大小写的,而在 Windows 下不区分大小写。因此,防止出现问题,建议都设置为小写。避免用 MySQL 的保留字命名(包括表名、列名)禁止超过 30 个字符临时库、表名必须以 tmp 为前缀,并以日期为后缀,如:tmp_shop_info_20190404备份库、表必须以 bak 为前缀,并以日期为后缀,如:bak_shop_info_20190原创 2020-08-07 22:41:37 · 202 阅读 · 0 评论 -
MySQL之分区表(分区表的特点、分区键、分区类型、RANGE分区、HASH分区、LIST分区、如何选择合适的分区方式、修改分区-添加分区、分区删除、使用分区表的注意事项)
分区表的特点在逻辑上为一个表,在物理上存储在多个文件中create table `login_log`( login_id int(10) unsigned not null comment '登录用户id', login_time timestamp not null default current_timestamp, login_ip int(10) unsigned not null comment '登录类型')engine=innodb default charse原创 2020-08-07 22:35:53 · 1080 阅读 · 0 评论 -
Mysql之主从复制(三步骤、基本原则、一主一从常见配置、测试是否配置成功)
复制的基本原理复制的三步骤1.master将改变记录到二进制日志。这些记录过程叫做二进制日志事件,binary log events2.slave将master的binary log events拷贝到它的中继日志3.slave重做中继日志中的事件,将改变应用到自己的数据库中。MySQL复制是异步的且串行的复制的基本原则1.每个slave只有一个master2.每个slave只能有一个唯一的服务器ID3.每个master可以有多个salve一主一从常见配置MySQL版本一致且原创 2020-08-06 19:05:41 · 217 阅读 · 0 评论 -
Mysql之数据库锁(表锁(偏读)、表锁案例、表锁总结、行锁(偏写)、行锁案例、如何分析行锁定、什么是间隙锁、间隙锁的危害、如何锁定一行)
表锁行锁间隙锁锁是计算机协调多个进程或线程并发访问某一资源的机制表锁(偏读)偏向MyISAM存储引擎,开销小,加锁快;无死锁,锁定粒度大,发送锁冲突的概率最高,并发度低表锁案例建表create table mylock( id int not null primary key auto_increment, name varchar(20))engine myisam;插入数据insert into mylock(name) values('a');insert.原创 2020-08-06 18:57:49 · 280 阅读 · 0 评论 -
Mysql之分页查询优化(分析两种情况的分页查询、 根据自增且连续主键排序的分页查询、查询根据非主键字段排序的分页查询)
很多时候,业务上会有分页操作的需求,对应的 SQL 类似下面这条:select a,b,c from t1 limit 10000,10;表示从表 t1 中取出从 10001 行开始的 10 行记录。看似只查询了 10 条记录,实际这条 SQL 是先读取 10010 条记录,然后抛弃前 10000 条记录,然后读到后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率是非常低的。分析两种情况的分页查询根据自增且连续主键排序的分页查询查询根据非主键字段排序的分页查询根据自增且连原创 2020-08-06 18:44:23 · 2042 阅读 · 1 评论 -
Mysql之trace(永远小表驱动大表、order by优化、order by使用index方式排序、Filesort 双路排序和单路排序、提高order by的速度)
永远小表驱动大表for i in range(5): for j in range(1000): passfor i in range(1000): for j in range(5): passorder by优化order by子句,尽量使用index方式排序,避免使用filesort方式排序建表,插入测试数据create table tbla( age int, birth timestamp not null);原创 2020-08-06 18:27:37 · 289 阅读 · 0 评论 -
Mysql之trace分析SQL优化器(trace分析SQL优化器介绍、使用 trace 进行分析、查看trace分析结果、总结)
建表CREATE TABLE `test_trace` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `a` INT(11) DEFAULT NULL, `b` INT(11) DEFAULT NULL, `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', `update_time` DATETIME NOT NULL DEFA原创 2020-08-05 22:34:48 · 1576 阅读 · 0 评论 -
Mysql之Show Profile进行SQL分析(Show Profile分析步骤、type、全局查询日志)
Show Profile进行SQL分析,是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优的测量默认情况下,参数处于关闭状态,并保持最近15次的运行结果。Show Profile分析步骤1.是否支持,看看当前MySQL版本是否支持2.开启功能,默认是关闭,使用前需要开启typeall 显示所有的开销信息block io 显示块IO相关开销cpu 显示CPU相关开销信息ipc 显示发送和接收相关开销信息原创 2020-08-05 22:29:39 · 196 阅读 · 0 评论 -
Mysql之慢查询日志(慢查询日志工具、函数和存储过程、创建函数、随机产生字符串、随机产生部门编号、创建存储过程、)
MySQL的慢查询日志MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阙值的语句,具体指运行时间超过 long_query_time值得SQL,则会被记录到慢查询日志中具体指运行时间超过long_query_time值得SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看那些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算是慢SQL,希望能收集超过5秒的SQL,结合之前explain进行全面分析.原创 2020-08-04 19:54:22 · 142 阅读 · 0 评论 -
Mysql之排序优化(分析、总结、小表驱动大表、order by优化、order by使用index方式排序、filesort有两种算法-双路排序和单路排序、提提高order by的速度)
分析1.观察,至少跑一天,看看生产的慢SQL情况2.开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并抓取出来3.explain + 慢SQL分析4.show profile5.进行SQL数据库服务器的参数调优(运维orDBA来做)总结1.慢查询的开启并捕获2.explain+慢SQL分析3.show profile查询SQL在MySQL服务器里面的执行细节4.SQL数据库服务器的参数调优永远小表驱动大表for i in range(5): for j in原创 2020-08-04 19:44:35 · 599 阅读 · 0 评论 -
Mysql之索引优化案例(单表优化、双表优化)
单表优化建表create table article( id int unsigned not null primary key auto_increment, author_id int unsigned not null, category_id int unsigned not null, views int unsigned not null, comments int unsigned not null, title varchar(255) n原创 2020-08-04 19:36:07 · 115 阅读 · 0 评论 -
Mysql之索引优化(索引的分类、回表、覆盖索引、键表SQL、口诀、练习)
索引的分类分类角度索引名称数据结构 B+树,Hash索引,B-Tree等存储层面聚簇索引,非聚簇索引逻辑层面主键索引,普通索引,复合索引(MySQL 组合索引和联合索引和复合索引都是一个东西),唯一索引,空间索引等回表假设我们执行一条查询语句select * from person where ID =原创 2020-08-03 23:49:07 · 199 阅读 · 0 评论 -
Mysql之explain分析SQL语句(顺序、select_type、table、partitions、type、possible_keys、key、key_len 、ref、rows、Extra)
explainexplain是什么?使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。原创 2020-08-03 23:37:23 · 1000 阅读 · 0 评论 -
Mysql之影响服务器性能的几个方面(SQL性能下降原因、SQL加载顺序、MySQL常见瓶颈)
影响服务器性能的几个方面SQL性能下降原因服务器硬件服务器的操作系统数据库存储引擎的选择数据库参数配置数据库结构设计和SQL语句SQL性能下降原因查询语句写的不好索引失效关联查询太多join服务器调优及各个参数设置SQL加载顺序手写SQL的顺序select distinct <select _list>from <left_table>join <right_table> on <join_codit原创 2020-08-01 00:41:08 · 190 阅读 · 0 评论 -
MySQL基准测试(目的、对整个系统进行基准测试、对MySQL进行基准测试、MySQL基准测试工具)
什么是基准测试基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响基准测试是针对系统设置的一种压力测试基准测试特点直接、简单、易于比较,用于评估服务器的处理能力可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系压力测试特点对真实的业务数据进行测试,获得真实系统所能承受的压力需要针对不同主题,所使用的数据和查询也是真实用到的基准测试是简化了的压力测试基准测试的目的建立MySQL服务器的原创 2020-08-01 00:18:17 · 286 阅读 · 0 评论 -
MySQL引擎之Memory(功能特点、如何选择存储引擎、参考条件、应用举例)
也称HEAP存储引擎,所以数据保存在内存中,如果MySQL服务重启数据会丢失,但是表结构会保存下来功能特点支持HASH索引和BTree索引所有字段都为固定长度 varchar(10)=char(10)不支持BLOB和TEXT等大字段Memory存储引擎使用表级锁如何选择存储引擎大部分情况下,InnoDB都是正确的选择,可以简单地归纳为一句话“除非需要用到某些InnoDB不具备的特性,并且没有其他办法可以替代,否则都应该优先选择InnoDB引擎参考条件事务如果应用需要事务支持,那么In原创 2020-07-31 23:53:51 · 461 阅读 · 0 评论 -
MySQL引擎之CSV(文件系统存储特点、特点、使用场景)
文件系统存储特点数据以文本方式存储在文件中.CSV文件存储表内容.CSM文件存储表的元数据如表状态和数据量.frm文件存储表结构信息特点以CSV格式进行数据存储使用场景适合做为数据交换的中间表...原创 2020-07-31 23:49:57 · 642 阅读 · 0 评论 -
MySQL引擎之InnoDB(系统表空间和独立表空间如何选择、Innodb存储引擎的特性、MyISAM和InnoDB对比)
MySQL5.5 及之后版本默认存储引擎,支持事务的ACID特性Innodb使用表空间进行数据存储innodb_file_per_tableON:独立表空间,tablename.ibdOFF:系统表空间:ibdataX X是一个数字系统表空间和独立表空间如何选择?系统表空间会产生IO瓶颈,刷新数据的时候是顺序进行的所以会产生文件的IO瓶颈独立表空间可以同时向多个文件刷新数据Innodb存储引擎的特性1.支持事务的ACID特性2.Innodb支持行级锁,可以最大程度的支持并发My原创 2020-07-31 23:47:26 · 189 阅读 · 0 评论 -
MySQL引擎之MyISAM(什么是锁、锁的类型、锁的粒度、存储引擎特性、存储引擎限制、适合场景)
MySQL5.5之前的版本默认存储引擎MyISAM存储引擎表由MYD(数据文件)和MYI(索引文件)组成什么是锁?锁主要作用是管理共享资源的并发访问锁用于实现事务的隔离性锁的类型共享锁(也称读锁),针对同一份数据,多个读操作可以同时进行而不会互相影响独占锁(也称写锁),当前写操作没有完成前,它会阻断其他写锁和读锁锁的粒度表级锁行级锁MyISAM存储引擎特性1.并发性与锁级别2.表损坏修复3.MyISAM表支持数据压缩myisampack -b -f myIsam.MYI原创 2020-07-31 23:43:39 · 275 阅读 · 0 评论