MyISAM

mysql changing unique key to primary (mariadb)

元气小坏坏 提交于 2021-02-04 21:37:17
问题 I have my table users: +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | userid | varchar(30) | YES | | NULL | | | lname | varchar(40) | YES | | NULL | | | fname | varchar(20) | YES | | NULL | | | system_id | varchar(12) | YES | | NULL | | +--------------------+--------------+------+-----+---------+-------+ and I want to change the system_id and the userid

mysql进阶知识

我与影子孤独终老i 提交于 2021-02-04 04:55:54
一.存储引擎 引擎 指的是一个系统的核心部分 引擎有不同分类是为了适应不同的使用场景 查看mysql支持所有引擎 show engines; MRG_MYISAM 是一堆MYISAM表的集合 用于做水平分表,如果一个表中数据量太大 将导致效率降低 水平分表就是把整个大表拆成不同的小表,每一次查询 会判断数据在哪一个表中 然后对应去查找 以此来提高效率 name age sex jerry 40 woman name age sex bgon 30 man 垂直分表 name age sex phone addr gf bf idcard number jerry 40 woman 110 上海 xx xx 身份证 学号 当一个表中 字段太多 然而常用的信息就那么一两个 那就可以把不常用字段 切到另一个表中 然后建立关联关系 innodb 是最最常用的引擎 因为支持 事务 行锁 外键一系列功能.... MyISAM 没有上述一堆功能 但是 存储效率比innodb要高 并且支持分表 MEMORY 速度快 不能永久存储 没有特别的功能 二.详细建表语句 []表示可选 create table 名称(字段 类型[(宽度) 约束条件],字段 类型,......) 三.mysql数据类型 为什么要给数据分类? 1.不同的数据类型 描述信息可以更加方便准确 2

一周学习小总结,MySQL进阶~

一笑奈何 提交于 2021-02-04 04:55:37
今天的这篇推文,是对前六天MySQL学习的一个进阶学习和小总结,前两天是端午节,大家过得如何?休息之余,不要忘记坚持学习,加油! 不同岗位对MySQL的技术要求 对于不用的岗位,我们对MySql的技术要求不同。 数据分析岗位,侧重查询和多表关联的复杂查询。对于数据分析来说,主要掌握查询,取数据,不关心性能。 数据库开发,程序员岗,注重设计系统,包括表的设计,增删改查,懂得数据库进行查询的原理,依据统计信息对查询进行性能优化,处理非常大的数据量的的查询,SQL的语言的复杂性较数据分析师的高。 DBA-数据库管理员,连接、配置服务器,保证SQL的服务性能、稳定性,修改慢查询,此外,数据库的集群管理,机房服务器连接的一致性管理也是重点。 Python操作MySQL 主要使用库:Python DB-API 常用模块: MySQLdb :MySQL-Python,底层C语言实现,在Python2版本中使用多 mysql-connector : MySqL官方提供,使用不是很友好 pymysql:使用Python实现,Python三版本以上使用, 主要使用pymysql 基本操作 连接数据库 import pymysql db = pymysql.connect(host='',port=3306) 获取游标 cs = db.cursor() Cursor是游标,指针的意思

[MySQL]select和where子句优化

筅森魡賤 提交于 2021-02-01 04:44:20
数据库优化: 1.可以在单个SQL语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化 2.数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置 3.在数据库级别进行优化,在硬件级别进行优化,平衡可移植性和性能 4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引; 5.压缩适用于InnoDB表的各种工作负载,以及只读MyISAM表 6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题 7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。 8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要 select where子句优化: 1.调整查询的结构,例如函数调用,为结果集中的每一行只调用一次,为表中的每一行只调用一次 2.减少查询中的全表扫描数 3.定期使用ANALYZE TABLE语句使表统计信息保持最新 4.了解特定于每个表的存储引擎的调优技术,索引技术和配置参数 5.优化InnoDB表的单查询事务 6.通过阅读EXPLAIN计划并调整索引,WHERE子句,连接子句等来调查特定查询的内部详细信息 7

学会熟练使用MySQL索引,快速检索数据库,大大提升工作效率

匆匆过客 提交于 2021-01-29 03:03:32
文章目录 一、MySQL 索引 (一)、索引的概念 (二)、索引的作用 (三)、索引的副作用 (四)、创建索引的原则依据 (五)、索引的分类和创建 (六)、查看索引 (七)、删除索引 (八)、实际案例 一、MySQL 索引 (一)、索引的概念 1、索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址 (类似于C语言的链表通过指针指向数据记录的内存地址) 。 2、使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询速度。 3、索引就好比是一本书的目录,可以根据目录中的页码快速找到所需的内容。 4、索引是表中一列或者若干列值排序的方法。 5、建立索引的目的是加快对表中记录的查找或排序。 (二)、索引的作用 1、设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。 2、当表很大或查询涉及到多个表时,使用索引可以成千,上万倍地提高查询速度。 3、可以降低数据库的I/O成本,并且索引还可以降低数据库的排序成本。 4、通过创建唯一性索引,可以保证数据表中每一行数据的唯一性。 5、可以加快表与表之间的连接。 6、在使用分组和排序时,可大大减少分组和排序的时间。 (三)、索引的副作用 1、索引需要占用额外的磁盘空间。 对于 MyISAM 引擎而言

索引原理-索引数据结构

℡╲_俬逩灬. 提交于 2021-01-27 10:43:40
推荐一个学习树结构的网站 --> 树结构学习网站 本文目录: 二叉树 红黑树 Hash表 B树 B+树 巨簇索引 非巨簇索引 联合索引 一. 二叉树 插入顺序: 4 2 1 10 6 7 首先, 左侧叶子节点 < 主节点 < 右侧叶子节点 我们乱序插入一些数据, 我们会发现0010这个节点被“孤立”了, 随着数据量的增加树的H(高度)会随之增加, 当我们加到了N的数据量后, 我们再查询这个N. 那么这个树搜索会从根直至到N这个位置, 对于自增的表列而言, 并没有明显提供查询性能. 而且有些节点甚至可能会独立存在, 拉高了树的H. 二. 红黑树 插入顺序: 4 2 1 10 6 7 我们会发现这棵树, 在添加的过程中, 会字段平衡节点与叶子节点之间的关系, 当一侧单向高时, 会把大于和小于的节点提上来, 左面是小于这个节点的, 右面是大于这个节点的, 它相比于二叉树, 有了一个自动平衡的功能, 但是与二叉树有一个相同的特点, 虽然数据量的增加树的高度会无限增加. 所以数据库的索引不会使用这个红黑树, 而JDK8的hashMap是数组+红黑树, 每个bucket内的红黑树节点数量也会有控制. 三. Hash表 Hash表的索引优缺点也显而易见, 对于where条件之后的=查询, 它是可以精确到桶的位置, 然后再看桶内数据哪条数据符合条件, 拿着地址去找数据. 但是缺点也很明显,

分分钟解决MySQL查询速度慢与性能差

爱⌒轻易说出口 提交于 2021-01-24 11:45:20
阅读本文大概需要 6 分钟。 一、什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS: QueriesPerSecond 意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS: 是 TransactionsPerSecond 的缩写,也就是事务数/秒。它是软件测试结果的测量单位。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。 Tips: 最好不要在主库上数据库备份,大型活动前取消这样的计划。 效率低下的 sql :超高的 QPS 与 TPS 。 大量的并发:数据连接数被占满( max_connection 默认 100 ,一般把连接数设置得大一些)。 并发量:同一时刻数据库服务器处理的请求数量 超高的 CPU 使用率: CPU 资源耗尽出现宕机。 磁盘 IO :磁盘 IO 性能突然下降、大量消耗磁盘性能的计划任务。解决:更快磁盘设备、调整计划任务、做好磁盘维护。 1.3 网卡流量:如何避免无法连接数据库的情况 减少从服务器的数量(从服务器会从主服务器复制日志) 进行分级缓存(避免前端大量缓存失效) 避免使用 select* 进行查询 分离业务网络和服务器网络 1.4 大表带来的问题( 重要 ) 1.4.1 大表的特点

MySQL 基础知识梳理学习(四)----GTID

点点圈 提交于 2021-01-23 05:32:47
在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制。GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高。 1.GTID的优点 (1)基于GTID搭建主从复制根据简单。 (2)可以确保每个事务只会被执行一次。 (3)可以方便的实现Replication的Failover,不需要像传统模式复制那样去找master_log_file和master_log_pos。 (4)GTID在MGR中也发挥了中要作用。MGR各节点之间复制依赖于GTID,并且在集群节点进行Recover重新加入到集群的操作中,会选择其中一个节点作为Donor,然后基于Purged的GTID开始同步数据。MGR还是通过GTID进行冲突验证,用于跟踪每个实例上提交的事务,确定哪些事务可能有冲突。 2.使用GTID搭建主从时,需要注意的MySQL参数。 (1)server_id: 设置MySQL实例的server_id,每个实例的server_id不能一样。 (2)gtid_mod=ON: MySQL实例开启GTID模式。 (3)enforce_gtid_consitency=ON: 使用GTID模式复制时,需要开启此参数,用来保证GTID的一致性。 (4)log-bin: MySQL必须开启Binlog。 (5)log-slave

MySQL行级锁和表级锁

主宰稳场 提交于 2021-01-19 04:00:10
  锁定用于确保事务完整性和数据库一致性。 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据。 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能会产生想不到的结果。   在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。 行级锁   行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为 共享锁 和 排他锁 。 特点   开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。 表级锁   表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MYISAM与INNODB都支持表级锁定。表级锁定分为 表共享读锁 (共享锁)与 表独占写锁 (排他锁)。 特点   开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。 页级锁   页级锁是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快

The last packet successfully received from the server was 900,045 milliseconds ago.

旧城冷巷雨未停 提交于 2021-01-19 03:00:39
异常信息 2018-12-12 21:57:07.034 8084 --- [SimpleAsyncTaskExecutor-3130] com.alibaba.druid.pool.DruidDataSource : discard connection com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 900,045 milliseconds ago. The last packet sent successfully to the server was 900,044 milliseconds ago. at sun.reflect.GeneratedConstructorAccessor111.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance