03 2022 档案
摘要:el-upload自动上传成功之后,通过绑定的on-success的方法中三个参数response, file, fileList中的response得到返回的数据
阅读全文
摘要:效果图(当前时间2022/3/18,星期五): 代码: // 表格部分 <el-table ref="table" :key="tableKey" v-loading="listLoading" :empty-text="emptyText" :data="list" border fit > <e
阅读全文
摘要:通过慢查询日志定位,可以通过慢查询日志定位那些已经执行完毕的sql语句 使用show processlist查询 慢查询日志在查询结束后才记录,所以在应用反应执行效率出现问题的时候查询慢查询日志不能定位问题,此时可以用show processlist查看当前MySQL正在进行的线程,包括线程的状态、
阅读全文
摘要:如果索引列出现了隐式类型转换,则MySQL不会使用索引 在where子句中字段类型是字符串,值是数值,如果没有加引号则MySQL不会使用索引 where条件中含有or,除非or前面使用了索引列而or之后是非索引列,索引会失效(回表次数过多导致) MySQL不能在索引中执行like操作,这是底层存储引
阅读全文
摘要:建立索引 对查询频次较高,数据量较大的表建立索引 索引字段应该从where子句条件中提取 where子句组合较多,应该挑选最常用,过滤效果最好的列的组合 业务上具有唯一特征的字段,即使是多个字段的组合,也必须建成唯一索引 使用前缀索引 索引列开始的部分字符,索引建立之后也是用硬盘来存储,因此短索引可
阅读全文
摘要:覆盖索引是指一个索引包含或者覆盖了所有需要查询的字段的值,不需要根据索引回表查询数据 覆盖索引必须要存储索引列的值,因此MySQL只能用BTree索引做覆盖索引 索引条目通常远小于数据行大小,极大减少数据访问量 因为索引按照顺序存储,所以io密集型查询会比随机从磁盘读取每一行数据的io少的多 inn
阅读全文
摘要:聚簇索引不是一种索引类型,而是一种数据存储方式 innoDB的聚簇索引是在一个文件中保存了B+树的索引和数据行 当表有聚簇索引的时候,它的行数据是存放在索引的叶子中 innodb中,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引
阅读全文
摘要:如果希望通过关键字匹配进行查询,就需要基于相似度的查询,而不是精准的数值比较,这时候就需要用到全文索引。 myisam的全文索引是一种特殊的B-Tree索引,一共有2层。 第一层是所有关键字,然后对于每个关键字的第二层,包含的是一组相关的文档指针 全文索引不会索引文档对象的所有词语,而是根据规则过滤
阅读全文
摘要:myisam表支持空间索引,可以用作地理数据存储。 这类索引不需要前缀查询。空间索引会从所有维度来索引数据。查询的时候可以有效的用任意维度来组合查询。 它必须使用MySQL的GIS(地理信息系统)的相关函数来维护数据。 但是MySQL对GIS的支持不完善,所以不常用这个
阅读全文
摘要:自适应哈希索引是innoDB的一个特殊功能,当它注意到某些索引值被使用的非常频繁的时候,会在内存中基于B+树索引之上再建立一个哈希索引,这样就可以让BTree索引也具有哈希索引的一些优点,比如快速哈希查找。 这是一个完全自动的内部操作,用户无法配置或者控制,但是可以关闭
阅读全文
摘要:哈希索引基于哈希表实现,只有精准匹配索引所有列的查询才有效。 对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,哈希码是一个较小的值,并且不同键值计算出的哈希码也不一样。 只有memory引擎显式支持哈希索引,这也是memory引擎的默认索引类型 因为索引自身只需要存储对应的哈希值,所以索引
阅读全文
摘要:大多数 MySQL 引擎都支持这种索引,但底层的存储引擎可能使用不同的存储结构,例如 NDB 使用 T-Tree,而 InnoDB 使用 B+ Tree。 InnoDB会显示BTree,但是实际上是B+Tree,可以理解为B+Tree是一种特殊的BTree B+树所有值都是按顺序排列存储,每个叶子到
阅读全文
摘要:索引也叫键,是存储引擎用于快速找到记录的一种数据结构 当表中数据越大的时候,索引对性能的影响越重要。 数据量小并且负载低的时候,不恰当的索引对性能的影响不明细,但是数据量增大,性能就会急剧下降 索引大大减少了服务器需要扫描的数据量,可以帮助服务器避免排序和临时表,可以将随机io变成顺序io 用索引不
阅读全文
摘要:更小的通常更好 一般情况下尽量选择可以正确存储数据的最小数据类型 数据类型越小通常越快,因为他们占用更少的磁盘、内存和cpu缓存 尽可能简单 简单数据类型的操作通常需要更少的cpu周期,例如整数比字符操作代价更低,因为字符集和校对规则使得字符相比整型更复杂 应该使用MySQL的内建类型date、ti
阅读全文
摘要:DATATIME 能保存大范围的值,从1001-9999年,精度为秒 把日期和时间封装到了一个整数中,与时区无关 使用8字节存储空间 TIMESTAMP 和UNIX时间戳相同 只使用4字节的存储空间 范围比DATATIME小的多,只能表示1970-2038年,并且依赖于时区
阅读全文
摘要:如果需要快速访问数据,并且这些数据不会被修改,重启以后丢失也没关系,这样的情况下使用memory表很有用。memory表至少比myisam快一个数量级,因为所有的数据都保存在内存,不需要磁盘IO,memory表的结构在重启后会保留,但是数据会丢失。 memory表支持哈希索引,因此查找速度极快。但是
阅读全文
摘要:MySQL5.1以及之前,myisam是默认存储引擎,myisam提供了大量的特性,包括全文索引、压缩、空间函数等,但不支持事务和行锁,最大的缺陷是崩溃后无法安全恢复。对于只读的数据或者表比较小、 可以忍受修复操作的情况,还是可以选择用myisam。 myisam将表存储在数据文件和索引文件中,分别
阅读全文
摘要:InnoDB是==MySQL的默认事务型引擎==,用来处理大量短期事务 InnoDB的==性能和自动崩溃恢复特性==使得它在非事务型存储需求中也很流行,所以我们优先考虑InnoDB InnoDB的数据存储在表空间中,表空间由一系列数据文件组成。MySQL4.1之后,InnoDB可以把每个表的数据和索
阅读全文
摘要:MVCC(Multi-Version Concurrency Control): 多版本并发控制,主要是为了提高数据库的并发性能 在很多情况下为了避免加锁,大都实现了非阻塞的读操作,写操作也只需要锁定必要的行 innodb的mvcc通过在每行记录后面保存2个隐藏的列来实现 这2个列一个保存了行的创建
阅读全文
摘要:未提交读 READ UNCOMMITTED 在该级别的事务中的修改即使没有提交,对其他事务也是可见的 事务可以读取其他事务修改完但是没提交的数据,这种问题叫做脏读 这个级别的事务还会造成不可重复读和幻读 性能没比别的级别好很多,所以很少使用 提交读 READ COMMITED 多数数据库默认的隔离级
阅读全文
摘要:ACID A:原子性(atomicity) 一个事务在逻辑上必须是不可分割的最小单元 整个事务中的所有操作要么全执行成功,要么全失败回滚。不可能只执行其中一部分 C:一致性(consistency) 数据库总是从一个一致性状态转换到另一个一致性状态 怎么理解一致性 I:隔离性(isolation)
阅读全文
摘要:事务 是一组原子性的sql查询 如果数据库引擎可以成功的对数据库执行这一组查询的所有语句,那么就执行这组查询。 如果其中有任何一句语句无法执行,那么所有语句都不会执行 总结:事务里面的语句要么全执行成功,要么全部执行失败
阅读全文
摘要:死锁 指的是多个事务在同一个资源上互相占用并请求对方占用的资源,导致的恶行循环的现象。 当多个事务以不同顺序锁定资源的时候就可能产生死锁 多个事务同时锁定一个资源也会产生死锁 解决死锁问题 数据库系统实现了各种死锁检测和死锁超时机制。 越复杂的系统,例如innoDB存储引擎,越能检测到死锁的循环依赖
阅读全文
摘要:第一层:服务器层/客户端层 提供连接处理,授权认证,安全等功能 第二层:核心服务层/功能层 实现MySQL的核心服务功能,包括查询解析、分析、优化、缓存以及日期时间等所有内置函数,所有跨存储引擎的功能都在这一层实现。例如存储过程、触发器、视图等 第三层:存储引擎层 存储引擎负责MySQL中数据的存储
阅读全文
摘要:MySQL最基本的锁策略:表锁(并且是开销最小的策略) 表锁会锁定整张表,一个用户对表进行写操作前需要先获得写锁,来阻塞其他用户对该表的所有读写操作。没有写锁时,其他用户才可以正常读 行锁: 可以最大程度支持并发,同时带来最大开销 InnoDB和XtraDB等存储引擎实现了行锁。 行锁只在存储引擎层
阅读全文
摘要:处理并发读/写的时候,通过实现一个由2种类型组成的锁系统来处理。 即共享锁(读锁),排它锁(写锁)。 读锁是共享的,相互不阻塞,多个用户可以同一时刻同时读取同一资源 写锁是排它的,一个写锁会阻塞其他写锁和读锁,确保只有一个用户在写入数据,并且防止其他用户读取该数据 写锁比读锁有更高优先级,写锁请求可
阅读全文
摘要:今天正好是3月,可以测试特殊月份的2月 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); // 设置时区 SimpleDateFormat oSdf = new SimpleDateFormat ("yyyy-MM
阅读全文