索引

python数据分析学习(3)pandas基本功能一

若如初见. 提交于 2020-03-01 23:21:32
目录   下面介绍pandas常见的基本功能,和python的基本数据类型进行比较可以看到pandas在操作大型数据集中的优势。 1.重建索引 (1)函数:reindex (2)作用:创建一个符合新索引的新对象。 (3)内容:   Series调用reindex方法时,会将数组按照新的索引进行排列,如果之前并不存在,则会引入缺失值NaN。   DataFrame调用reindex方法时,会改变行和列索引。只传入一个序列时,行会重建索引;传入columns关键字参数时,列会重建索引。 (4)重要参数:ffill   作用:重建索引时插值,按顺序把没有数据的标签补充数据。 (5)实例 2.轴向上删除条目 (1)函数:drop (2)作用:在轴向上删除一个或更多的条目。 (3)内容:   返回一个含有指示值或轴向上删除值的新对象。   Series调用drop方法时,把字符串或者字符串序列列表当作参数传入并返回对象。   DataFrame调用drop方法时,传入字符串序列列表会根据行标签删除值(轴0),传入axis=1或者axis='columns'会根据列标签删除值。 (4)重要参数:inplace   作用:清除被删除的数据,并返回删除后的数据。 (5)实例 3.索引,选择与过滤 (1)索引   Series的索引可以不只是整数,也可以是小数,字符串,切片,字符串索引列表

MySQL InnoDB索引的存储结构

大城市里の小女人 提交于 2020-03-01 22:51:25
InnoDB索引的数据结构 InnoDB索引采用了B-Tree的数据结构,数据存储在叶子节点上,每个叶子节点默认的大小是16KB。 当新记录插入到InnoDB聚簇索引中时,如果按顺序插入索引记录(升序或降序),当达到叶子节点最大的容量时,下一条记录就会写到新的的页中。叶子节点可使用的容量为总容量的15/16,InnoDB会留1/16的空间,以备将来插入和更新索引记录时使用, 如果以随机顺序插入记录,则页面的容量为1/2到15/16之间。 你可以设置 innodb_page_size 来调整页的大小,支持 64KB, 32KB, 16KB (默认), 8KB, 和4KB。 索引的分类 InnoDB的索引类型分为 主键索引和非主键索引 。 主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。整张表的数据其实就是存储在聚簇索引中的, 聚簇索引就是表 。 如果没有设置主键怎么办呢?MySQL会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键。 聚簇索引结构如下图所示: 非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)。 二级索引的叶子节点中存的是主键的值 ,不是原始的数据

根据多年经验整理的《互联网MySQL开发规范》

烂漫一生 提交于 2020-03-01 19:26:39
写在前面:无规矩不成方圆。对于刚加入互联网的朋友们,肯定会接触到 MySQL , MySQL 作为互联网最流行的关系型数据库产品,它有它擅长的地方,也有它不足的短板,针对它的特性,结合互联网大多应用的特点,笔者根据自己多年互联网公司的 MySQL DBA 经验,现总结出互联网 MySQL 的一些开发规范,仅供参考。 一、基础规范 (1) 使用 INNODB 存储引擎 (2) 表字符集使用 UTF8 (3) 所有表都需要添加注释 (4) 单表数据量建议控制在 5000W 以内 (5) 不在数据库中存储图 ⽚ 、文件等大数据 (6) 禁止在线上做数据库压力测试 (7) 禁 ⽌ 从测试、开发环境直连数据库 二、命名规范 (1) 库名表名字段名必须有固定的命名长度, 12 个字符以内 (2) 库名、表名、字段名禁 ⽌ 止超过 32 个字符。须见名之意 (3) 库名、表名、字段名禁 ⽌ 止使 ⽤ 用 MySQL 保留字 (4) 临时库、表名必须以 tmp 为前缀,并以 ⽇ 日期为后缀 (5) 备份库、表必须以 bak 为前缀,并以日期为后缀 三、库、表、字段开发设计规范 (1) 禁 ⽌ 使用分区表 (2) 拆分大字段和访问频率低的字段,分离冷热数据 (3) 用 HASH 进 ⾏ 散表,表名后缀使 ⽤⼗ 进制数,下标从 0 开始 (4) 按日期时间分表需符合 YYYY[MM][DD][HH]

Java最新突击面试笔记总结—ElasticSearch面试内容

一世执手 提交于 2020-03-01 18:07:29
搜索引擎面试题 题目和解答来自于中华石杉和自己整理总结而得,希望能够有所帮助。 搜索引擎主要考察ElasticSearch 以及对应底层的Lucene技术。 主要面试题集中于: es分布式架构原理 es的插入与查询 es在数据量很大的情况下如何提高性能 es在生产集群的部署架构是什么,每个索引有多大的数据量,每个索引有多少分片 1. es分布式架构原理 首先需要明白es是如何存储数据的,es把对应的数据转换为index。基于倒排索引的方式,每个index上存储了多个type类型,每个type对应一个document。而一个index会被分成多个shard(默认是5个)。 在分布式部署时,每个shard会被复制,即一个shard有primary和replica 每个es进程存储的是不同shard的primary和replica。es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据拉,负责切换primary shard和replica shard身份拉取之类的。 2. es的数据写入与读取 2.1 es数据的写入 2.1.1 es数据的写入过程 注意,客户端是可以在任意节点进行写入数据的,与Kakfa不同。 1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点) 2

MySQL中MyISAM与InnoDB区别及选择

落爺英雄遲暮 提交于 2020-03-01 17:37:03
InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩 MyISAM: 不支持事务,回滚将造成不完全回滚,不具有原子性 不支持外键 不支持外键 支持全文搜索 保存表的具体行数,不带where时,直接返回保存的行数 DELETE 表时,先drop表,然后重建表 MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸 跨平台很难直接拷贝 MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引 表格可以被压缩 选择: 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。 两种类型都有自己优缺点,选择那个完全要看自己的实际类弄。 来源: https://www.cnblogs.com/chenlinlab/p/9545282.html

MyISAM和InnoDB区别 及选择

牧云@^-^@ 提交于 2020-03-01 16:40:06
MySQL默认采用的是MyISAM。 MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。 InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。 InnoDB支持外键,MyISAM不支持。 InnoDB的主键范围更大,最大是MyISAM的2倍。 InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、 varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空 格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。 MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。 没有where的count(

MySQL中MyISAM与InnoDB区别

北战南征 提交于 2020-03-01 16:39:41
原文:https://blog.csdn.net/frycn/article/details/70158313?utm_source=copy InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩 MyISAM: 不支持事务,回滚将造成不完全回滚,不具有原子性 不支持外键 不支持外键 支持全文搜索 保存表的具体行数,不带where时,直接返回保存的行数 DELETE 表时,先drop表,然后重建表 MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸 跨平台很难直接拷贝 MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引 表格可以被压缩 选择: 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。

zbb20180927 MySQL MyISAM InnoDB区别

流过昼夜 提交于 2020-03-01 16:39:29
MySQL MyISAM InnoDB区别 InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩 MyISAM: 不支持事务,回滚将造成不完全回滚,不具有原子性 不支持外键 不支持外键 支持全文搜索 保存表的具体行数,不带where时,直接返回保存的行数 DELETE 表时,先drop表,然后重建表 MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸 跨平台很难直接拷贝 MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引 表格可以被压缩 选择: 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。 两种类型都有自己优缺点,选择那个完全要看自己的实际类弄。 来源: https://www.cnblogs.com

MySQL高级 InnoDB 和 MyISAM 的区别

安稳与你 提交于 2020-03-01 16:38:52
InnoDB: 支持事务处理等 不加锁读取 支持外键 支持行锁 不支持FULLTEXT类型的索引 不保存表的具体行数,扫描表来计算有多少行 DELETE 表时,是一行一行的删除 InnoDB 把数据和索引存放在表空间里面 跨平台可直接拷贝使用 InnoDB中必须包含AUTO_INCREMENT类型字段的索引 表格很难被压缩 MyISAM: 不支持事务,回滚将造成不完全回滚,不具有原子性 不支持外键 不支持外键 支持全文搜索 保存表的具体行数,不带where时,直接返回保存的行数 DELETE 表时,先drop表,然后重建表 MyISAM 表被存放在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex)引伸 跨平台很难直接拷贝 MyISAM中可以使AUTO_INCREMENT类型字段建立联合索引 表格可以被压缩 选择: 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。 如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。 两种类型都有自己优缺点,选择那个完全要看自己的实际类弄。 来源: https://www.cnblogs.com/zhanghanwen16/p/8520800

python刷LeetCode:35. 搜索插入位置

自作多情 提交于 2020-03-01 16:18:10
难度等级:简单 题目描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3,5,6], 5 输出: 2 示例 2: 输入: [1,3,5,6], 2 输出: 1 示例 3: 输入: [1,3,5,6], 7 输出: 4 示例 4: 输入: [1,3,5,6], 0 输出: 0 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-insert-position 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路: 1、暴力解法,逐渐遍历对比,此方法时间复杂度是O(n)。 2、二分法查找,笔者采用此方法,最快,时间复杂度是O(log n) 解题代码: class Solution: def searchInsert(self, nums: List[int], target: int) -> int: left = 0 right = len(nums) -1 while True: index = int((left + right)/2) if target > nums[index]: # 更新左右边界索引 left = index else: right