- TiDB Development Guide
- 1. Get Started
- 1.1. Install Golang
- 1.2. Get the code, build and run
- 1.3. Setup an IDE
- 1.4. Write and run unit tests
- 1.5. Debug and profile
- 1.6. Commit code and submit a pull request
- 2. Contribute to TiDB
- 2.1. Community Guideline
- 2.2. Report an Issue
- 2.3. Issue Triage
- 2.4. Contribute Code
- 2.5. Cherry-pick a Pull Request
- 2.6. Review a Pull Request
- 2.7. Make a Proposal
- 2.8. Code Style and Quality Guide
- 2.9. Write Document
- 2.10. Release Notes Language Style Guide
- 2.11. Committer Guide
- 2.12. Miscellaneous Topics
- 3. Understand TiDB
- 3.1. The Lifecycle of a Statement
- 3.1.1. DDL
- 3.1.2. DML
- 3.1.3. DQL
- 3.2. Parser
- 3.3. Planner
- 3.3.1. Table Statistics
- 3.3.2. Rule-based Optimization
- 3.3.3. Cost-based Optimization
- 3.3.4. Plan Cache
- 3.3.5. SQL Plan Management
- 3.4. Execution
- 3.4.1. Parallel Execution Framework
- 3.4.2. Implementation of Vectorized Execution
- 3.4.3. Memory Management Mechanism
- 3.4.4. Implementation of Typical Operators
- 3.5. Transaction
- 3.5.1. Transaction on TiKV
- 3.5.2. Optimistic Transaction
- 3.5.3. Lock Resolver
- 3.5.4. Pessimistic Transaction
- 3.5.5. Async Commit
- 3.5.6. 1PC
- 3.5.7. MVCC garbage collection
- 3.6. Session
- 3.7. Privilege
- 3.8. Plugin
- 3.9. System tables
- 3.9.1. information_schema
- 3.9.1.1. slow_query
- 4. Project Management
- 4.1. Releases Train Model
- 4.2. TiDB Versioning
- 5. Extending TiDB
- 5.1. Add a function