MyISAM

mysql difference in index usage between MyISAM and InnoDB

淺唱寂寞╮ 提交于 2019-11-30 04:59:43
问题 I have these small tables, item and category : CREATE TABLE `item` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(150) NOT NULL, `category_id` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`), KEY `category_id` (`category_id`) ) CHARSET=utf8 CREATE TABLE `category` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(150) NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`) ) CHARSET=utf8 I have inserted 100 categories and 1000 items.

面试题录:数据库篇

醉酒当歌 提交于 2019-11-30 02:37:17
1、数据库三大范式 数据库设计的三大范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就叫做范式。 范式就是符合某一种设计要求的总结,要想设计一个结构合理的关系型数据库,必须满足一定的范式。 三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了; 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF; 第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF。 理解: 第一范式 1、每一列属性都是不可再分的属性值,确保每一列的原子性 2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。 第二范式 1、每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。 2、一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。 第三范式 1、数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c

六、MySQL的存储引擎

核能气质少年 提交于 2019-11-30 02:32:31
MySQL支持多种不同的存储引擎,并且可以通过插件的方式进行安装、包括MySQL官方提供和一些第三方公司的存储引擎,本文会介绍几种常见的存储引擎,介绍每种的特点等。 查看默认的存储引擎 SHOW VARIABLES LIKE 'default_storage_engine'; 查看MySQL支持但存储引擎 SHOW ENGINES 或 SHOW VARIABLES LIKE 'have_%'; MyISAM 曾经MySQL的默认存储引擎,不支持事务、不支持外键、支持全文索引,优势就是访问速度比较快。 存储文件 主要文件分为 frm MYD MYI 三种数据类型的文件 .frm 中存放了表定义相关的数据,表名与文件名相同,存放在与数据库名相同的文件夹中 .MYD 存放了数据文件 .MYI 存放了索引文件 数据文件和索引文件可以在创建表结构的时候通过 DATA DIRECTORY 和 INDEX DIRECTORY 来指定,例如: CREATE TABLE test ( id int(11), title varchar(20) ) ENGINE = MyISAM DATA DIRECTORY = '/data/db' INDEX DIRECTORY = '/data/db'; 损坏与修复 MyISAM有可能出现表损坏,这时候需要进行表修复,可以使用CHECK

Mysql需知需会(20191121)

佐手、 提交于 2019-11-30 02:07:41
20191121 一、登录方式 mysql -uroot -pmypassword 可登录,命令行不能带有密码 否则history查看泄露,不推荐 mysql -uroot -p 回车输入密码 mysql -u root -pmypassword u和用户之间有空格,可登录,不推荐 mysql -u root -p ruozedata 不能登录,-p不能有空格 二、杀进程 show processlist 查看进程:看时间,找到消耗时间长的,有可能导致mysql服务夯住或锁死的 kill id 杀进程:执行的sql确认清楚,谨慎kill 三、字段类型 数值型 类型 大小 范围(有符号) 范围(无符号) 用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值 MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值 INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值 BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446

mysql成功的远程连接

孤街浪徒 提交于 2019-11-30 00:42:43
1、在虚拟机上的window7中安装mysql,版本mysql-5.7.27-win32,可以是解压版或者是安装版的, MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的。如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装,一般MySQL将会安装在C:\Program Files\MySQL\MySQL Server 5.6 该目录中;zip格式是自己解压,解压缩之后其实MySQL就可以使用了,但是要进行配置。 以下对解压版的安装进行讲解: 1.首先进行解压。 2.在安装目录新建data文件夹。 3.在安装目录新建my.ini配置文件。 #代码开始 [Client] #设置3306端口 port = 3306 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\mysql-5.7 # 设置mysql数据库的数据的存放目录 datadir=D:\mysql-5.7/data # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB sql_mode=NO_ENGINE

MySQL高级阶段学习

大憨熊 提交于 2019-11-29 21:59:40
数据库分区、分表、分库、分片 分区 数据库分区是一种物理数据库的设计技术,它的目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。 分区并不是生成新的数据库表,而是将表的数据均匀分摊到不同的硬盘,系统或不同服务器存储介子中,实际上还是一张表。另外,分区可以做到将表的数据分摊到不同的地方,提高数据检索的效率,降低数据库频繁IO压力值,分区的优点如下: 相对于单个文件系统或硬盘,分区可以存储更多的数据。 数据管理比较方便,如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。 精准定位分区查询数据,不需要全表扫描查询,大大提高检索效率。 可跨多个分区磁盘查询,来提高查询的吞吐量。 在涉及聚合函数时,很容易进行数据的合并。 水平分区 这种形式分区是对表的行进行分区,通过这种的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分体或集体分割。所有在表中定义的列在每个数据集中都能找到,所以表的特性得以保持。 举例:一个包含十年发票记录的表可以被分区为10个不同的分区,每个分区包含的是其中一年的记录。 垂直分区 这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。 举例:一个包含了大text和blob列的表,这些text和blod列又不经常被访问

oracle查看被锁的表和解锁

佐手、 提交于 2019-11-29 21:30:52
oracle查看被锁的表和解锁 --以下几个为相关表 SELECT * FROM v$lock; SELECT * FROM v$sqlarea; SELECT * FROM v$session; SELECT * FROM v$process ; SELECT * FROM v$locked_object; SELECT * FROM all_objects; SELECT * FROM v$session_wait; --查看被锁的表 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id; --查看那个用户那个进程照成死锁 select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time; --查看连接的进程 SELECT sid, serial#, username, osuser FROM v$session; --3.查出锁定表的sid, serial#,os_user_name,

Python常见面试题四:爬虫和数据库部分

被刻印的时光 ゝ 提交于 2019-11-29 21:24:46
目录 1. scrapy 和 scrapy-redis 有什么区别?为什么选择 redis 数据库? 2. 用过的爬虫框架或者模块有哪些?谈谈他们的区别或者优缺点? 3. 常用的 mysql 引擎有哪些?各引擎间有什么区别? 4. 描述下 scrapy 框架运行的机制? 5. 什么是关联查询,有哪些? 6. 写爬虫是用多进程好?还是多线程好? 为什么? 7. 数据库的优化? 8. 常见的反爬虫和应对方法? 9. 分布式爬虫主要解决什么问题? 10. 爬虫过程中验证码怎么处理? 1. scrapy 和 scrapy-redis 有什么区别?为什么选择 redis 数据库? 1) scrapy 是一个 Python 爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。而 scrapy-redis 一套基于 redis 数据库、运行在 scrapy 框架之上的组件,可以让 scrapy 支持分布式策略,Slaver 端共享 Master 端 redis 数据库里的 item 队列、请求队列和请求指纹集合。 2) 为什么选择 redis 数据库,因为 redis 支持主从同步,而且数据都是缓存在内存中的,所以基于 redis 的分布式爬虫,对请求和数据的高频读取效率非常高。 2. 用过的爬虫框架或者模块有哪些?谈谈他们的区别或者优缺点? Python自带:urllib,urllib2

Mysql的建表规范与注意事项

这一生的挚爱 提交于 2019-11-29 20:44:41
一、库名、表名、字段名必须使用小写字母,“_”分割;库名、表名、字段名必须不超过12个字符;库名、表名、字段名见名知意,建议使用名词而不是动词。 二、建议使用InnoDB存储引擎。 存储引擎:innoDb支持事物,myisam不支持事物,建议使用innoDb, 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好。 (1) MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件: 1.tb_demo.frm,存储表定义; 2.tb_demo.MYD,存储数据; 3.tb_demo.MYI,存储索引。 MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用: 1.选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。 2.插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。 (2) InnoDB是一个健壮的事务型存储引擎

面试365

故事扮演 提交于 2019-11-29 19:50:11
1、一行代码实现1--100之和 2、如何在一个函数内部修改全局变量 3、列出5个python标准库 os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间 4、字典如何删除键和合并两个字典 执行结果 5、谈下python的GIL python的GIL是python的全局解释器锁,同一个进程中如果有多个线程运行,一个线程运行的时候会霸占解释器,上了个锁即GIL,进程内其他线程无法运行。如果遇到耗时操作,GIL会打开,其他线程先运行,所以多线程仍然是有先后顺序的。 6、python实现列表去重的方法 执行结果 7、fun(*args,**kwargs)中的*args,**kwargs什么意思? 用于函数的接收参数。可以接收补丁数量的参数。 *args是用来接收一个非键值对的可变数量的参数列表 **kwargs允许接收不定长度的键值对。 8、简述with方法打开处理文件帮我我们做了什么? 9、列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25] 执行结果 10、python中生成随机整数、随机小数、0--1之间小数方法 随机整数:random.randint(a,b),生成区间内的整数 随机小数:习惯用numpy库