MyISAM

InnoDB performance tweaks

会有一股神秘感。 提交于 2019-12-03 03:21:15
问题 I'm switching a large table to InnoDB from myISAM. There has been a lot of discussion regarding why switching makes sense, but not much about HOW to do it while making sure the table performs well. Assuming I'll have InnoDB and MyISAM tables in on database, are there parameters I should change in the MySQL conf file to facilitate better performance? Any other defaults that can be bumped up to tweak performance? 回答1: Your innodb_buffer_pool_size should be set to the amount of InnoDB data and

了解MyISAM与InnoDB的索引差异(转)

你说的曾经没有我的故事 提交于 2019-12-03 02:38:29
出处原文: 1分钟了解MyISAM与InnoDB的索引差异 数据库的索引分为 主键索引 (Primary Inkex)与 普通索引 (Secondary Index)。InnoDB和MyISAM是怎么利用B+树来实现这两类索引,其又有什么差异呢?这是今天要聊的内容。 一,MyISAM的索引 MyISAM的 索引与行记录是分开存储的 ,叫做 非聚集索引 (UnClustered Index)。 其主键索引与普通索引没有本质差异: 有连续聚集的区域 单独存储行记录 主键索引的叶子节点,存储主键,与对应行记录的 指针 普通索引的叶子结点,存储索引列,与对应行记录的 指针 画外音:MyISAM的表可以没有主键。 主键索引与普通索引是两棵独立的索引B+树,通过索引列查找时,先定位到B+树的叶子节点,再通过指针定位到行记录。 举个例子,MyISAM: t(id PK, name KEY, sex, flag); 表中有四条记录: 1, shenjian, m, A 3, zhangsan, m, A 5, lisi, m, A 9, wangwu, f, B 其B+树索引构造如上图: 行记录单独存储 id为PK,有一棵id的索引树,叶子指向行记录 name为KEY,有一棵name的索引树,叶子也指向行记录 二、InnoDB的索引 InnoDB的 主键索引与 行记录是存储在一起的,故叫做

MySQL面试题

不想你离开。 提交于 2019-12-03 01:47:04
1、MySQL的复制原理以及流程 (1)、复制基本原理流程 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中; 2. 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己的relay log中; 3. 从:sql执行线程——执行relay log中的语句; (2)、MySQL复制的线程有几个及之间的关联 MySQL 的复制是基于如下 3 个线程的交互( 多线程复制里面应该是 4 类线程): 1. Master 上面的 binlog dump 线程,该线程负责将 master 的 binlog event 传到slave; 2. Slave 上面的 IO 线程,该线程负责接收 Master 传过来的 binlog,并写入 relay log; 3. Slave 上面的 SQL 线程,该线程负责读取 relay log 并执行; 4. 如果是多线程复制,无论是 5.6 库级别的假多线程还是 MariaDB 或者 5.7 的真正的多线程复制, SQL 线程只做 coordinator,只负责把 relay log 中的 binlog读出来然后交给 worker 线程, woker 线程负责具体 binlog event 的执行; (3)

数据库复习秘籍

匿名 (未验证) 提交于 2019-12-03 00:32:02
练习前的准备,先创建一个test库,在test库中建立数据: create table goods ( goods_id mediumint( 8 ) unsigned primary key auto_increment, goods_name varchar ( 120 ) not null default ‘‘ , cat_id smallint ( 5 ) unsigned not null default ‘ 0 ‘ , brand_id smallint ( 5 ) unsigned not null default ‘ 0 ‘ , goods_sn char ( 15 ) not null default ‘‘ , goods_number smallint ( 5 ) unsigned not null default ‘ 0 ‘ , shop_price decimal ( 10 , 2 ) unsigned not null default ‘ 0.00 ‘ , market_price decimal ( 10 , 2 ) unsigned not null default ‘ 0.00 ‘ , click_count int ( 10 ) unsigned not null default ‘ 0 ‘ ) engine = myisam default

springboot2.0事务未生效

匿名 (未验证) 提交于 2019-12-03 00:22:01
配置加了 @EnableTransactionManagement 方法上加了 @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, timeout = 36000, rollbackFor = Exception.class) 不起作用。 原因:Springboot2.0后,依然是使用jpa、Hibernate来操作mysql,发现Hibernate默认创建的表是myisam引擎,而不是innodb不起作用,myisam引擎是不支持事务的 CREATE TABLE `user` ( `id` int(11) NOT NULL, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 添加下面的方言即可修改为innodb spring: jpa: database: mysql show-sql: true hibernate: ddl-auto: update naming: physical-strategy: org.springframework.boot

算法、试题

匿名 (未验证) 提交于 2019-12-02 23:43:01
1.Cookie禁用了,Session还能用吗? 对应的服务器Session,Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,就得不到Session a. s n = s e s s i o n i d ( ) ; s e s s i o n i d ( sn=session_id(); session_id( s n = s e s s i o n i d ( ) ; s e s s i o n i d ( b.fopen w+ 写入session_id() fread 取出sesson_id 2.GET、POST传输最大容量是多少? GET发送http协议通过url方式传递,受浏览器或者服务器的设置限制 POST实体数据,表单传送,通过php.conf的post_max_size可以设置传输大小 3.抓取远程图片到本地,会用什么函数? file_get_contents() file_put_contents() 4.CGI是什么?什么是FastCGI?php-fpm、FastCGI、Nginx之间是什么关系? server收到一个php的请求时,会启动一个程序去处理当前的请求,而这个程序就是CGI 通用网关接口(返回标准html数据的服务) FastCGI 是一个协议,是应用程序和 WEB 服务器连接的桥梁。Nginx

SQL优化

匿名 (未验证) 提交于 2019-12-02 23:38:02
对表的设计合理化(符合3NF) 添加适当的索引(index)[普通索引,主键索引,唯一索引,全文索引] 分表技术(水平分割,垂直分割) 读写(update/delete/add)分离 存储过程(模块化编程) 对MySQL配置优化(配置最大并发数 my.ini , 调整缓存大小) MySQL服务器硬件升级 定时清除不需要的数据,定时进行碎片整理 1NF:对属性的原子性约束,即表的列具有原子性,不可再分解。 2NF:表中的记录是唯一的,实体属性完全依赖于主键,每张表只描述一件事情。 3NF:表中不能有冗余数据,任何非主属性不依赖于其他非主属性,从表的外键必须使用主表的主键。 反三范式:某些业务场景下,为了提高效率,可能会适当降低范式标准,增加字段,允许冗余。 主键索引:当一张表把某个列设为主键的时候,该列就是主键索引 普通索引:一般先创建表,再创建普通索引 create index 索引名 on 表(列) alter table 表名 add index 索引名 (列) 全文索引:全文索引主要针对文件,文本的检索,比如文章,全文索引只针对myisam引擎有效 create table test ( )engine=myisam charset utf-8; 使用全文索引: select * from test where match(xxx,yyy) against('aaa');

Speeding up conversion from MyISAM to InnoDB

血红的双手。 提交于 2019-12-02 22:47:00
I have a MySQL 1.5 GB MyISAM-table (1.0 GB data, 0.5 GB indexes) in production which I'm about to convert into InnoDB. Since the table is used in production I'd like to make the downtime as short as possible. My questions: What MySQL configuration options should be adjusted in order to speed up ALTER TABLE table_name ENGINE=InnoDB; ? What other tricks can be used in order to speed up conversion of a production database table from MyISAM to InnoDB? Setting a large innodb_buffer_pool_size (2GB or more) preread your old myisam data/index files using shell commands increase innodb_log_file_size

MySQL数据库的事务及存储引擎

。_饼干妹妹 提交于 2019-12-02 22:09:20
一、关系型数据库与非关系型数据库  1.关系型数据库的特点:   1)数据以表格的形式出现   2)每行为各种记录名称   3)每列为记录名称所对应的数据域   4)许多的行和列组成一张表单   5)若干的表单组成数据库  2.关系型数据库的优势:    2.1 复杂的查询:可以使用SQL语句方便地在一个表以及多个表之间做非常复杂的数据查询。    2.2 事务支持:使得对于安全性能很高的数据访问要求得以实现。  3.非关系型数据库的优势:    3.1 性能:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。    3.2 可扩展性:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。  问题:三种传统数据库之间的区别?   答:三者之间是根据数据之间的联系而去别的,层次性数据库是树形结构、网状型数据库是链接指针结构、关系型数据库是二维表结构。 二、事务(ACID)   事务(transaction)是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元。   事务必须具备以下四个属性,简称ACID属性:      原子性(atomicity) :事务是一个完整的操作。事物的各部操作是不可分的(原子的);要么都执行,要么都不执行

MySQL之事务、锁

匿名 (未验证) 提交于 2019-12-02 22:06:11
锁 一、概念   锁是计算机协调多个进程或线程访问某一个资源的机制。在数据库中,除传统的计算资源(CPU、RAM、IO)的争用意外,数据也是一种许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问的一个重要因素。从这个角度来说,锁对数据库尤其重要,也更加复杂。本文就以MyISAM和InnoDB两个引擎来说明锁的问题; 二、MySQL锁概述   相对其他数据库而言,MySQL的锁机制比较简单,其中最为显著的特点是不同的引擎具有不同的锁。比如MyISAM和InnoDB分别采用表锁、行锁,但是InnoDB也支持表锁,默认情况下采用行锁; 三、MySQL表锁和行锁对比 锁的名称 开销 加锁速度 死锁 粒度 并发性能 表锁 С 快 不会出现 大 最低 行锁 大 慢 出现 С 最高 从锁的角度来说表锁适合查询为主,只有少量按索引条件更新数据的应用;行锁适合于大量按索引条件来并发更新少量的数据,同时又有并发查询的应用; MyISAM表锁   可以通过table_locks_waited和table_locks_immediate来分析系统表锁的争夺; 如果table_locks_waited的值比较高的话,则说明存在较高的表锁争夺。 二、表锁的锁模式   表级锁有两种方式:读锁和写锁,锁模式的兼容性如下: 由上表可见