您的位置:首页 > 数据库 > MySQL

mysql的一些基础知识

2018-02-09 16:46 411 查看
mysql实践:
(1) mysql的页面大小可以自行设置:innodb_page_size默认大小为16KB,但是可以设置为32KB,8KB,4KB;
(2) mysql varchar字段最长可存储的字节数为65535,实际为65532, utf8的每一个字节占用8位,但是实际存储的长度为63352/3-1=21842。
(3) 与oracle的对比,Mysql: 单进程,多线程;Oracle: 多进程;
(4) 当mysql有多个启动配置文件时,如果显示它使用的优先顺序:
mysql --help |grep my.cnf
(5) MyISAM存储引擎缓存的是表的索引文件(MYI),同时,数据的缓存交由操作系统来完成,但是其它数据库和InnoDB缓存的是数据。
(6) MySQL NDB使用使用share nothing结构,其最大特点时,数据全部存放在内存中,而可以将索引存放在磁盘上。
(7) Memory存储引擎使用哈希索引,而不是B树索引。只适合存储临时数据,因为系统重启动时或者系统崩溃,其数据都会丢失。
(8) 进程通讯方式有:管道,命名管道,命名字,TCP/IP套接字, UNIX套接字。
(9) InnoDB version: 老版本的InnoDB,也就是InnoDB Plugin最大只支持1023的并发量。
 ------------------------------------------------------------
 |老版本InnoDB | 支持ACID, 行锁设计,MVCC |
 ------------------------------------------------------------
 | InnoDB 1.0.x | 继承,增加了compress和dynamic页格式
 -------------------------------------------------------------
 | InnoDB 1.1.x | 增加Linux AIO, 多回滚段
 -------------------------------------------------------------
 | InnoDB 1.2.x | 增加全文索引,在线索引添加
 ------------------------------------------------------------
 
10. mysql的主要线程及其主要工作:
Master Thread:核心线程,将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新,合并插入缓冲,UNOD页的回收等。
IO Thread: 处理IO请求
Purge Thread: 事务被提交后,其所使用的undolog可能不再需要,因为Purge Thread用来回收已经使用并分配的undo而。innodb_purge_threads可以大于1(innodb1.2版本之后)
Page Cleaner Thread: 将之前版本中脏页的刷新操作都放入到单独的线程中来完成。(innodb1.2之后引入,减轻master thread的工作)。

11.mysql中缓冲区的数量由如下参数决定:
innodb_buffer_pool_instances

12. Mysql的缓冲池中管理方法,使用改良版本的LRU(最近最少使用)算法,意思就是在插入新数据在缓存中的时候,插入位置大概的内存页的中部位置。
参数:innodb_old_blocks_pct: 37%,这就是所谓的midpoint, 在midpoint之后的列表称为old列表, 在midpoint之前的列表称为new列表。
new列表中存储的数据算是热点数据,而old列表中存储的数据为非热点数据。
另外控制热点数据时,使用innodb_old_blocks_times来控制非热数据加入热数据之前的次数。
所以可以通过设定innodb_old_blocks_time或者innodb_old_blocks_pct的值来减少非热点数据的刷出.
set global innodb_old_blocks_time=0;
set global innodb_old_bloks_pct=20;

13. 32位操作系统最大能使用3GB内存,在打开PAE选项时,最大支持64GB内存。
PC目前支持的最大内存:512GB
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: